频率发生器设计内容摘要:

键处理流程图 43 所示 : 定时中断子程序 定时器中断子程序中有定时器 0 与定时器 1 中断。 定时器中断子程序流程图分别如图 44 图 45 所示。 外部中断 0 键 Ex0==0。 Flag+= Flag==1。 Ex1 pl+=5 边界处理 Flag==2。 Ex1 ZKB+=10 边界处理 Flag==3。 FLAG=0,计算定时器 0 和 1 的初值 键处理结束 图 43 按键处理流程图 1 五、程序 设计 include include define uchar unsigned char define uint unsigned int sbit OutPut=P1^7。 //矩形波输出口 float fosc=12020000。 //系统时钟频率 float length=65536。 //方式 1 计数长度 uchar flag。 //状态键标志 uchar ZKB。 //占空比 uint PL。 //频率 uchar TIMER0_L,TIMER0_H,TIMER1_L,TIMER1_H。 //T0 和 T1 的定时初值 uchar code tabl[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。 /***************************************** 1 延时子程序的设计 , 第一、定义的 C51 中循环变量,尽量采用无符号字符型变量。 第二在 FOR 循环语句中,尽量采用变量减减来做循环。 第三、在 do„while, while 语句中,循环体内变量也采用减减方法。 这因为在 C51 编译器图 44 定时器 0 中断子程序 图 45 定时器 1 中断子程序 2 中,对不同的循环方法,采用不同的指令来完成的。 第四、对于要求精确延时时间更长,这时就要采用循环嵌套 ,的方法来实现,因此,循环嵌套的方法常用于达到 ms 级的延时。 对于循环语句同样可以采用 for, do„while, while 结构来完 成,每个循环体内的变量仍然采用无符号字符变量。 *****************************************/ void delay1ms(uchar n) //延时 n ms { uchar j。 while(n) for(j=0。 j120。 j++) {。 } } /***************************************** 2 系统初始化程序 设计, C语言的语句用来向计算机系统发出操作指令,一个语句经编译后,产生若干条机器指令。 一个实际的程序应当包含若干语句,应当指出, C 语言都是用来完成一定任务的。 *****************************************/ void system_init(void ) { SCON=0x00。 flag=0。 PL=20。 ZKB=50。 TL0=0xb0。 //初始频率 20Hz 定时 TH0=0x3c。 TL1=0x58。 //初始占空比 50 定时 TH1=0x9e。 TMOD=0x11。 //T0 和 T1为工作方式 1的定时模式 IT0=1。 //选择 INT0 为下降沿触发方式 IT1=1。 //选择 INT1 为下降沿触发方式 EX0=1。 EX1=1。 //外部中断 0 允许 ET0=1。 //定时 器 1和定时器 0中断允许 ET1=1。 EA=1。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。