[問題] 8051序列阜傳送與接收
功能:
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
→
05/31 21:15, , 1F
05/31 21:15, 1F
推
06/03 08:05, , 2F
06/03 08:05, 2F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):