关于51单片机的一个作业题
同学选了个关于选修课,问我个作业题,当时告诉我是用汇编写的,原本以为学过没啥问题的,但是一看差异太大,所以贴出来问问怎么搞的。
阅读程序,给每条指令加上注释,并总结出该程序段实现的功能。
P1_0BITP1.0
P1_7BITP1.7
ORG0000H
LJMPMAIN
ORG000BH
LJMPTIME0
ORG001BH
LJMPCOUNT1
MAIN: CLRP1_7
CLRP1_0
MOVTMOD,#61H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVTH1,#0ECH
MOVTL1,#0ECH
MOVIP,#08H
SETBET0
SETBET1
SETBEA
SETBTR0
SETBTR1
DELAY: SJMPDELAY
TIME0: CPLP1_0
MOVTH0,#3CH
MOVTL0,#0B0H
RETI
COUNT1:CPLP1_7
RETI
END
P1_0BITP1.0
P1_7BITP1.7;定义P10和P17口
ORG0000H ;起始地址0000,复位后,就会跳到这里执行
LJMPMAIN ;跳到MAIN标号,体系结构决定的,预留前三个字节指令的意义
ORG000BH ;定时器0中断
LJMPTIME0 ;中断服务函数
ORG001BH ;计数器1中断
LJMPCOUNT1 ;中断服务
MAIN: CLRP1_7
CLRP1_0 ;把IO上对应的这两位都清0
MOVTMOD,#61H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVTH1,#0ECH
MOVTL1,#0ECH
MOVIP,#08H ;以这段为对定时器0和定时器1的配置,具体的计算,找书看看吧
SETBET0
SETBET1 ;使能两个中断
SETBEA ;开全局中断
SETBTR0
SETBTR1 ;启动两个定时器
DELAY: SJMPDELAY ;死循环
TIME0: CPLP1_0 ;定时中断触发后,P10脚取反
MOVTH0,#3CH
MOVTL0,#0B0H ;重置定时器
RETI ;中断返回
COUNT1:CPLP1_7 ;计数中断触发后.P17脚取反
RETI ;中断返回
END