单片机基于8051片子做的八路抢答器程序,请高手帮忙检查下
8路抢答器控制要求:
1。一共8路抢答输入
2。当没有任一路按键按下时,数码管中间一段每隔一秒闪烁一次(亮的时间和灭的时间分别为0。5秒)
3。当任一路抢答时,蜂鸣器发音(鸣叫1秒),并且LED数码管显示该路的编号。
4。一次抢答结束后,过5S恢复到开机初始状态,等待下一轮抢答。
程序:
org 0000h
sjmp START
ORG 0013H
LJMP INT1
ORG 0030H
START: CLR IE1
SETB EA
SETB EX1
CLR R7
CLR R6
CLR R5
CLR R4
MAIN: MOV P0 , #40H
ACALL TIME
MOV P0 , 00H
ACALL TIME
AJMP MAIN
INT1: PUSH PSW
PUSH ACC
JNB P1.0 , TI1
JNB P1.1 , TI2
JNB P1.2 , TI3
JNB P1.3 , TI4
JNB P1.4 , TI5
JNB P1.5 , TI6
JNB P1.6 , TI7
BAKE: POP ACC
POP PSW
RETI
TI1: MOV P0 ,#86H
ACALL TIME1
MOV P0 , #06H
AJMP TIME2
TI2: MOV P0 ,#DBH
ACALL TIME1
MOV P0 , #5BH
AJMP TIME2
TI3: MOV P0 ,#CFH
ACALL TIME1
MOV P0 , #4FH
AJMP TIME2
TI4: MOV P0 ,#E6H
ACALL TIME1
MOV P0 , #66H
AJMP TIME2
TI5: MOV P0 ,#EDH
ACALL TIME1
MOV P0 , #6DH
AJMP TIME2
TI6: MOV P0 ,#FDH
ACALL TIME1
MOV P0 , #7DH
AJMP TIME2
TI7: MOV P0 ,#87H
ACALL TIME1
MOV P0 , #07H
AJMP TIME2
TIME: MOV R7 , #2000H
DEL: MOV R6 , #125H
DEL1: DJNZ R6 , DEL1
DJNZ R7 , DEL
RET
TIME1: MOV R5 , #2H
1S: ACALL TIME
DJNZ R5 , 1S
RET
TIME2: MOV R4 , #4H
4S: ACALL TIME1
DJNZ R4 , 4S
RETI
因为没有具体连接过,第一次实验,请有经验的大哥大姐们帮忙检查下,谢谢咯。。
补充:I/O分配:
P0输出P0.0-P0.6为数码管
P0.7为蜂鸣器
P1为8个按钮输入
答案:这个,你拿Mewin软件仿真一下不就行了,编译汇编看有没有错误,这个并不一定要有实验箱的,软件得先查错啊
其他:才给0分啊,至少得100吧,现在技术不廉价哦 我发个程序给你好了。检查程序太麻烦了
上一个:请问一下高手 我这段51的汇编语言 宏定义 那里错误啊? 不能调用啊?
下一个:用51做一个pwm输出 要求:1 汇编语言 2 用一个定时器 3三个按键K1 K2 K3