51单片机定时 汇编语言编写

1.用T0定时10ms
要求:
① T0计时期间CPU做ACC累加1操作
② T0计时到后在中断服务程序中给R2加1

2.用51单片机I/O端口和扩展口控制LED和按键
①按键扫描子程序,每50ms检查按键状态。
②LED输出子程序377扩展输出口驱动LED
③按1次键,灯(位输出“1”点亮相应位灯)显示内容改变1次(0x00-0x01-0x02-0x04-0x08-0x10-0x20-0x40-0x80-0xff循环),初始状态显示0x00。

求大神帮帮忙!本人比较笨,能有点注释就更好了。。。邮箱[email protected]

第1个回答  2013-10-27
1:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-10000) ;定时10毫秒
MOV TL0,#LOW(65536-10000)
SETB TR0
SETB ET0
SETB EA
LOOP:
INC A
SJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB TR0
INC R2
RETI
END

2:
KEY BIT P1.0
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000) ;定时50毫秒
MOV TL0,#LOW(65536-50000)
SETB TR0
SETB ET0
SETB EA
CLR A
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
JB KEY,T0E
MOV DPTR,#LEDTAB
PUSH ACC
MOVC A,@A+DPTR
MOV P0,A
POP ACC
INC A
MOV B,#10
DIV AB
T0E:
RETI
LEDTAB:
DB 00H,01H,02H,04H,08H,10H,20H,40H,80H,0FFH
END本回答被提问者采纳
相似回答