66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "sys.h"
 | |
| 
 | |
| void init() {
 | |
|   square0->output_address = pdmout0;
 | |
|   square0->high_val = 0x6fff;
 | |
|   square0->low_val = 0x0000;
 | |
|   square0->flags = SQUARE_FLAG_ENABLE_msk;
 | |
|   // will set the period later
 | |
| }
 | |
| 
 | |
| int strlen(const char* str) {
 | |
|   int i = 0;
 | |
|   while(str[i] != '\0') {
 | |
|     i++;
 | |
|   }
 | |
|   return i;
 | |
| }
 | |
| 
 | |
| void log(const char* stuff) {
 | |
|   uart_writen(uart0, stuff, strlen(stuff));
 | |
| }
 | |
| 
 | |
| int main() {
 | |
|   init();
 | |
| 
 | |
|   led0->output = 42;
 | |
| 
 | |
|   while(1) {
 | |
|     uint8_t c = uart_read(uart0);
 | |
|     uint16_t period = 0;
 | |
|     if (c == 'c') {
 | |
|       led0->output = 1;
 | |
|       period = 1493;  // C4, 262.63 Hz, maybe
 | |
|       log("C4\r\n");
 | |
|     } else if (c == 'd') {
 | |
|       period = 1330;  // D4, 293.66 Hz, maybe
 | |
|       log("D4\r\n");
 | |
|       led0->output = 2;
 | |
|     } else if (c == 'e') {
 | |
|       period = 1185;  // E4, 329.63 Hz, maybe
 | |
|       log("E4\r\n");
 | |
|       led0->output = 4;
 | |
|     } else if (c == 'f') {
 | |
|       period = 1119;  // F4, 349.23 Hz, maybe
 | |
|       log("F4\r\n");
 | |
|       led0->output = 8;
 | |
|     } else if (c == 'g') {
 | |
|       period = 996;  //  G4, 392.00 Hz, maybe
 | |
|       log("G4\r\n");
 | |
|       led0->output = 16;
 | |
|     } else if (c == 'a') {
 | |
|       period = 887;  //  A4, 440.00 Hz, maybe
 | |
|       log("A4\r\n");
 | |
|       led0->output = 32;
 | |
|     } else if (c == 'b') {
 | |
|       period = 791;  //  B4, 493.88 Hz, maybe
 | |
|       log("B4\r\n");
 | |
|       led0->output = 64;
 | |
|     } else {
 | |
|       led0->output = 37;
 | |
|     }
 | |
| 
 | |
|     square0->period = period;
 | |
|   }
 | |
| }
 |