《用AVR实现《祝你生日快乐》》由会员分享,可在线阅读,更多相关《用AVR实现《祝你生日快乐》(3页珍藏版)》请在金锄头文库上搜索。
1、/*=程序说明=项目名称:祝你生日快乐作 者: 小混混要学习创建日期:修改说明:程序说明:(1)CPU 型号:mega16l(2)时钟频率:(3)实现功能:(4)程序概述:=*/=头文件加载=#include #include #define Fosc 7372800 /Hz#define uint8 unsigned char#define uint16 unsigned int#define uint32 unsigned long int#define sint8 char#define sint16 int/=端口声明=#define BeepIO PORTC.5 /#define B
2、eepDDR DDRC.5 /=全局常量声明=uint16 flash FreTable = 1000,262,293,330,349,392,440,494,523;uint8 flash music =0x05,0x08, 0x05,0x08,0x06,0x04, 0x05,0x04, 0x11,0x04,0x07,0x02, 0x05,0x08, 0x05,0x08,0x06,0x04, 0x05,0x04, 0x12,0x04,0x11,0x02,0,0;/=全局变量声明=uint8 YQ = 0;/YQ = musici 4;uint8 YD = 0;/YD = musici uin
3、t8 YF = 0;/YC = musici+1;uint32 OneYS = 2400; /ms 一个全音符的时间长度uint32 PlayTimeMax = 2;uint32 PlayTimeCount = 0;uint32 YYi=0;/=函数声明=void init(void);/函数初始化/=主函数=void main()/主函数 uint16 YYi = 0;/-系统初始化-init(); while(1)/=功能子函数=/*-函数名称:功 能:输 入:输 出:说 明:-*/void init(void)BeepIO = 1; /BeepDDR = 1; /1、配置为 CTC 模式。TCCR1B |= (0 4;YD = musicYYi YF = musicYYi+1;OCR1A =( Fosc / FreTableYD ) YQ;PlayTimeMax = (OneYS * FreTableYD YQ)/ YF /1000; if(YD=0)BeepIO = 1; PlayTimeCount = 0;/5、开全局中断。#asm(sei) YYi = YYi + 2; elseYYi=0; PlayTimeMax = 2;PlayTimeCount = 0;OCR1A = 3; /=程序结束=