?? sh606.a51
字號:
PCON EQU 87H
;定義端口
DOUT BIT P1.0 ;數(shù)據(jù)輸出
DIN BIT P1.1 ;數(shù)據(jù)輸入
SCLK BIT P1.2 ;串行時(shí)鐘
CS BIT P1.3 ;片選信號
IRQ BIT P3.2 ;紅外模式接口
;定義RAM地址
TX1 EQU 10H ;發(fā)送寄存器
TX2 EQU 11H
RX1 EQU 12H ;接收寄存器
RX2 EQU 13H
ORG 00H
BEGIN: MOV SP, #70H
CLR SCLK ;清空時(shí)鐘線信號
;初始化8951的串口t
MOV TMOD, #20H ;T1的波特率
MOV TH1, #253 ;重裝數(shù)值
MOV SCON, #50H
MOV PCON, #80H ;波特率加倍
MOV TCON, #40H ;計(jì)數(shù)器開始工作
;初始化MAX3100的串口-紅外方式工作在9600下
MOV TX1, #0E4H
MOV TX2, #0CAH ;9600波特率,兩個(gè)停止位
CALL UTLK ;串口寫
LOOP: JNB IRQ, URCV ;判斷有數(shù)據(jù)
NRECV: JBC RI, RCV51
JMP LOOP
;從MAX3100接收,從8951發(fā)送
URCV: MOV TX1, #0 ;讀數(shù)據(jù)
MOV TX2, #0
CALL UTLK ;將數(shù)據(jù)發(fā)送到RX
MOV A, RX2 ;將數(shù)據(jù)送入累加器
MOV SBUF, A ;發(fā)送RS232信號
JMP LOOP
;從MAX3100發(fā)送,從8951接收
RCV51: MOV A, SBUF ;從8951獲得數(shù)據(jù)
MOV TX1, #80H
MOV TX2, A ;準(zhǔn)備紅外數(shù)據(jù)
CALL UTLK ;從紅外端口發(fā)送數(shù)據(jù)
JMP LOOP
;子程序,完成16位數(shù)據(jù)的收發(fā)
UTLK: CLR CS ;片選工作
MOV A, TX1
CALL BYT8 ;發(fā)送
MOV RX1, A ;從RX1獲得數(shù)據(jù)
MOV A, TX2 ;獲得高位字節(jié)
CALL BYT8 ;發(fā)送
MOV RX2, A ;從RX2獲得數(shù)據(jù)
SETB CS ;關(guān)閉片選
RET
;8個(gè)字節(jié)的移位
BYT8: MOV R4, #8 ;8位數(shù)據(jù)
SETB DIN
B8LP: RLC A ;載入高位字節(jié)
MOV DOUT, C ;輸出
SETB SCLK ;時(shí)鐘高電平
MOV C, DIN ;獲得數(shù)據(jù)
CLR SCLK ;時(shí)鐘低電平
MOV ACC.0, C ;載入低位字節(jié)
DJNZ R4, B8LP
RET
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -