同学选了个关于选修课,问我个作业题,当时告诉我是用汇编写的,原本以为学过没啥问题的,但是一看差异太大,所以贴出来问问怎么搞的。
阅读程序,给每条指令加上注释,并总结出该程序段实现的功能。
P1_0 BIT P1.0
P1_7 BIT P1.7
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME0
ORG 001BH
LJMP COUNT1
MAIN: CLR P1_7
CLR P1_0
MOV TMOD,#61H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#0ECH
MOV TL1,#0ECH
MOV IP,#08H
SETB ET0
SETB ET1
SETB EA
SETB TR0
SETB TR1
DELAY: SJMP DELAY
TIME0: CPL P1_0
MOV TH0,#3CH
MOV TL0,#0B0H
RETI
COUNT1:CPL P1_7
RETI
END
------解决方案--------------------
LZ还算是诚实,我给一个大概的,具体的还得请LZ的同学去细查书籍。
P1_0 BIT P1.0
P1_7 BIT P1.7;定义P10和P17口
ORG 0000H ;起始地址0000,复位后,就会跳到这里执行
LJMP MAIN ;跳到MAIN标号,体系结构决定的,预留前三个字节指令的意义
ORG 000BH ;定时器0中断
LJMP TIME0 ;中断服务函数
ORG 001BH ;计数器1中断
LJMP COUNT1 ;中断服务
MAIN: CLR P1_7
CLR P1_0 ;把IO上对应的这两位都清0
MOV TMOD,#61H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#0ECH
MOV TL1,#0ECH
MOV IP,#08H ;以这段为对定时器0和定时器1的配置,具体的计算,找书看看吧
SETB ET0
SETB ET1 ;使能两个中断
SETB EA ;开全局中断
SETB TR0
SETB TR1 ;启动两个定时器
DELAY: SJMP DELAY ;死循环