MOV TH0,#3CH MOV TL0,#0B0H RETI
S3:CPL P1.0
MOV TH0,#0FEH MOV TL0,#0FBH RETI
S4:CPL P1.0
MOV TH0,#0FFH MOV TL0,#0CDH RETI END
中断程序流程图
第五章 总结
在进行课程设计的过程中,我发觉,对资料的获取是一个很重要的部分。制作过程中,我查阅了不少有关设计问题的资料,并从中获取自己所需要的东西。同时为了使得自己的设计更加完善,在参考众多资料的同时,我也与同学进行讨教。这一个过程,让我体会到了许多新颖有趣的观点,收获不少。
虽然单片机是我们专业的一个重要的专业课,但是我起初对它兴趣并不是很大,而且还觉得枯燥无味。然而,通过这一次的课程设计,我发现,单片机并没有想象中那么枯燥。在制作成品的过程中,我对单片机的兴趣也在增加。同时,我也了解到了自己理论上的不足和缺陷,对于自我认知上面有很大的帮助。总的来说,这一次课设,我收获良多。 参 考 文 献
《单片机原理及其接口技术》(第三版) 胡汉才 主编
《数字电子技术基础》(第五版) 清华大学电子学教研室组 编 阎石 主编 引用百度百科
附录
附录一:原理图、PCB图以及PROTEUS仿真图
输出频率为1HZ的方波信号图
输出频率为10HZ的方波信号图
输出频率为10HZ的方波信号图
输出频率为10000HZ的方波信号图
附录二:程序代码
主程序:
ORG 0000H LJMP 0A00H ORG 0A00H
SETB EA ;开总中断
SETB ET0 ;开T0中断
SETB PT0 ;设置T0为高中断优先级
MOV TMOD,#01H ;设置T0工作在定时器方式1状态下 LOOP:MOV P2,#0FFH ;P2口作为输入输出端口时,要先写1 JNB P2.0,SS1 ;依次扫描是哪个开关闭合 JNB P2.1,SS2 ; JNB P2.2,SS3 ; JNB P2.3,SS4 ;
SJMP LOOP ;若没有开关闭合则重新扫描 SS1:MOV TH0,#3CH ;当开关1闭合,则给T0赋初值,并打开T0定时器 MOV TL0,#0B0H ; SETB TR0 ; MOV R0,#10 ;
SJMP $ ;等待T0中断响应
SS2:MOV TH0,#3CH ;当开关1闭合,则给T0赋初值,并打开T0定时器 MOV TL0,#0B0H ; SETB TR0 ;
SJMP $ ;等待T0中断响应
SS3:MOV TH0,#0FEH ;当开关1闭合,则给T0赋初值,并打开T0定时器 MOV TL0,#0FBH ; SETB TR0 ;
SJMP $ ;等待T0中断响应
SS4:MOV TH0,#0FFH ;当开关1闭合,则给T0赋初值,并打开T0定时器 MOV TL0,#0CDH ; SETB TR0 ;
SJMP $ ;等待T0中断响应
中断服务程序: ORG 000BH LJMP next ORG 0100H
next:JNB P2.0,S1 ;再次判断是哪个开关闭合 JNB P2.1,S2 ; JNB P2.2,S3 ; JNB P2.3,S4 ;
SJMP next ;若没有开关按下,则重新扫描 S1:DJNZ R0,NS1 ;若定时时间不到,则转入NS1 CPL P1.0 ;定时时间已到,输出电平取反 MOV R0,#10 ;
NS1:MOV TH0,#3CH ; MOV TL0,#0B0H ; RETI ;中断返回 S2:CPL P1.0 ;电平取反
MOV TH0,#3CH ; MOV TL0,#0B0H ; RETI ;中断返回 S3:CPL P1.0 ;电平取反 MOV TH0,#0FEH ; MOV TL0,#0FBH ; RETI ;中断返回 S4:CPL P1.0 ;电平取反 MOV TH0,#0FFH ; MOV TL0,#0CDH ; RETI ;中断返回 SJMP $ ;停机等待 END ;结束