作者handy012 (handy)
看板Electronics
标题[问题] 8051序列阜传送与接收
时间Thu May 31 21:15:09 2007
功能:
start(int0):传送10+2使七段显示器显示12
stop(int1):传送02使七段显示器显示02
可是按下start却显示10也就是十位数(R4)会盖掉个位数(R3)不是相加
想了很久还有找不到错误
各位前辈可以给个方向吗?感谢!
ORG 00H
JMP START
ORG 03H
JMP INT0
ORG 13H
JMP INT1
ORG 23H
JMP UARTINT
START:
MOV TMOD,
#00100000B MODE2 TIMER1
MOV TH1,#1DH 采用模式1,鲍率设定为137.6Hz
MOV TL1,#1DH 所以TH1求出为30
SETB TR1
SETB IT0
ANL PCON,
#01111111B SMOD=0 采用单倍鲍率
MOV SCON,
#01010000B 采用模式1 致能REN
MOV IE,
#10010101B 致能串列 中断 外部中断0,1
MOV R2,
#00000010B 一开始显示自己组别(02)
MOV R3,
#00000010B 组别个位数(02)
MOV R4,
#00010000B 组别十位数(10)
MOV P0,R2
CLR F0 设定旗标,用以判断是否接收
第2笔资料
LOOP:
JMP LOOP 等待中断
INT0:
MOV A,R3 开始传送自己组别资料
MOV SBUF,A 传送个位数
MOV R5,#1
CALL DELAY 采用DELAY延时5.73毫秒,
使传送能顺利传完而产生传送
中断而接下来产生接收中断
TRANS:
MOV A,R4
MOV SBUF,A 传送十位数
SETB F0 设定旗标为1,使其可接收第2笔
MOV R5,#1
CALL DELAY 同前面DELAY之叙述
UARTINT:
JB RI,RECEIVE 判断是为接收或传送中断
CLR TI 若是传送中断则清除TI使得可传第2笔
RETI
RECEIVE:
CLR RI 清除RI使得可接收第2笔
JB F0,RECE 若F0=1 则接收第2笔
MOV A,SBUF 接收第一笔个位数
MOV R1,A 接其放置R1暂存
RETI
RECE:
MOV A,SBUF 接收第2笔十位数
ORL A,R1 将个位数与十位数串在一起
MOV P0,A 显示在7节显示器上
RETI
DELAY:
MOV R7,#20 延时副程式 延时5.73毫秒
D1:
MOV R6,#144
DJNZ R6,$
DJNZ R7,D1
DJNZ R5,DELAY
RET
INT1:
MOV A,R2 STOP 使其显示原本组别资料
MOV P0,A
RETI
END
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.13.136.217
1F:→ handy012:以上为自传自接的情况下 05/31 21:15
2F:推 gpentacene:建议使用C语言写51程式,节省时间,并简洁易懂。 06/03 08:05