选用一块AT89C52型单片机,使用其P0口,P3口的部
分。P0口作为发光二极管的控制信号输出端,P30作为按钮K1的信号输入口P32为按钮K2外部中断0信息输入口,P33作为K3外部中断0的信息输入口。单片机晶振频率为12MHz,每个机器周期1s。电源使用5v直流电。五、程序语言:
ORG0000H:程序入口地址AJMPMAINORG0003H:外部中断0入口地址AJMPZD0ORG0013H:外部中断1入口地址AJMPZD1ORG0100H:主程序入口地址MAINMOVSP40H:初始化,开外部中断1,外部中断0,以及总中断,并
且将外部中断1设为最高优先级,并且是脉冲触发方式。MOVIE85H
fMOVIP04H
MOVTCON01H
YYYMOVA7FH:将A寄存器中存入7FH
SETBP34
JBP34PPP:判断按键K1是否按下,如果没有按下则跳转到PPP,灯从
左到右依次点亮。
CLRCy
:进位位清零
MOVA0FFH:A中存入FFH
MMMRLCA
:A中数据带进位位左移一位。
MOVP2A
:将A中数据送到P0口,灯亮且延迟1秒。
ACALLDELAY
SETBP34
JBP34PPP:判断K1是否按下,若按下则跳转到MMM,没有则跳转
到PPP灯依次从左向右亮,且没亮一次,延迟1秒
SJMPMMM
PPPMOVP2A
A中数据转到P0口,点亮灯。
RRA
:A中数据右移一位
ACALLDELAY:调用一秒延迟
SETBP34
JNBP34YYY:判断K1按键是否按下,按下则跳转到YYY,没有则跳
转到PPP
SJMPPPP
ZD0MOVA0FFH:外部中断0,将FFH送入A寄存器中,再送到P0口,
灯全灭,且延迟4秒钟,后再循环亮。
MOVP2A
ACALLDELAY
ACALLDELAY
ACALLDELAY
ACALLDELAY
AJMPMAIN
RETI
:中断程序返回
ZD1MOVA0FFH:A寄存器中存入FFH再送到P0口,灯灭,
MOVP0A
AJMP
:本地一直循环
RETI
:中断返回
DELAYMOVR525:延迟4秒子程序
D1MOVR6200
D2MOVR7100
DJNZR7
DJNZR6D2
DJNZR5D1
RET
:子程序返回
END
:程序结束
f调试说明:打开c51软件,新建工程gao,新建文件,输入以上程序,以asm
格式保存。在gao工程中添加输入好的程序。点击编译,对有错误地方修改。选择生成HEX文件,再编译,此时已经生成HEX文件。打开AVR烧录软件,将生成好的HEX文件下载到单片机机中,观察单片机的对应发光二极管的状态,看是否与设计预想一致。若不一致,在C51里修改相应地方,再重新编译下载,直至与预想一致。
六、总结
单片机课程设计是一个很好的实践环节,它将我们所学的课堂知识与实践生活结合,使我们所学知识得到加固。以前的课程都是理论知识的学习,感觉有些抽象,学习起来也比较乏味,没有主观的学习热情。这次课程设计的主要收获就是在运用知识的过程中让我r