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