?? rs232_slave
字號:
;******************************文件信息************************************
;文件名:RS232_Slave.asm
;功能:演示使用DP-51H實驗儀實現動態LED數碼管顯示RS232接受到主機數據
;說明:
; 1.在DP-51H實驗儀的LED數碼管上顯示"DP-51H"
; 2.正確設置跳線JP5即把JP5跳線置于下端
; P3.0,P3.1跳到RXD_232、TXD_232
;作者:葉皓賁
;最后修改時間:2003年3月21
;*************************************************************************
DATA_BUF DATA 50H ;定義顯示緩沖區的首地址?
ACK BIT 10H ;應答標志位
SLA DATA 60H ;器件從地址
SUBA DATA 61H ;器件子地址
NUMBYTE DATA 62H ;讀/寫的字節數
;使用前定義常量:
SDA EQU P1.7
SCL EQU P1.6
MTD EQU 30H ;IIC發送數據緩沖區首址
MRD EQU 40H ;IIC接收數據緩沖區首址 (緩沖區40-4FH)
ZLG7290 EQU 70H
ORG 0000H ;偽指令,定義程序從0000H開始存放
;但在DP-51H上仿真時請輸入8000H
AJMP MAIN
ORG 0100H ;偽指令,定義以下程序從0100H開始存放
;但在DP-51H上仿真時請輸入8100H
MAIN:
MOV SP,#60H ;給堆棧指針賦初值
MOV DATA_BUF,#0DH ;數據"d"
MOV DATA_BUF+1,#16H ;數據"P"
MOV DATA_BUF+2,#1FH ;數據"-"
MOV DATA_BUF+3,#05H ;數據"5"
MOV DATA_BUF+4,#01H ;數據"1"
MOV DATA_BUF+5,#11H ;數據"H"
MOV TMOD,#20H ;設置T1為方式2
MOV TH1,#0FDH ;設置波特率為9600
MOV TL1,#0FDH
MOV SCON,#50H ;設置串口位方式1
MOV PCON,#00H
SETB TR1 ;定時器1開始計數
UP:
MOV R0,#40H ;
MOV R7,#05H
ACALL RDS ;接受dp-51H
MOV A,40H
CJNE A,#0DH,DPDIS ;接收的數據與發送的數據線比較
MOV A,41H ;若發送正確,則發送下一位數據
CJNE A,#16H,DPDIS
MOV A,42H
CJNE A,#1FH,DPDIS
MOV A,43H
CJNE A,#05H,DPDIS
MOV A,44H
CJNE A,#01H,DPDIS
MOV A,45H
CJNE A,#11H,DPDIS
MOV 51H,#0DH ;錯誤顯示
MOV 50H,#10H
DPDIS:
MOV R0,#30H
MOV R7,#05H
ACALL SENDU ;發送5個數據
DISP:
ACALL DISPLAY ;調用顯示子程序
;ACALL USER_PRO ;調用用戶其它任務
AJMP DISP
;串口發送子程序,R7中存放數據個數,數據首地址存放在R0中
SENDU:
MOV A,@R0 ;取要發送的數據
MOV SBUF,A ;發送數據
SENDWT:
JBC TI,SENDNEXT
AJMP SENDWT
SENDNEXT:
INC R0 ;取下一位數據
DJNZ R7,SENDU ;數據發送完了嗎?
RET
;串口接受子程序,R7中存放數據個數,接受存放到首地址R0中
RDS:
SETB REN ;開接收允許
RDWAIT:
JBC RI,RDNEXT
AJMP RDWAIT
RDNEXT:
MOV A,SBUF ;接收數據
MOV @R0,A ;把接收到的數據保存到R0指定的單元中
INC R0 ;地址加1
DJNZ R7,RDS ;接收完了嗎?
RET
DISPLAY:
MOV R7,#6H
MOV R4,#60H
LOOP:
MOV MTD,R4
INC R4
MOV A,R7
ADD A,#DATA_BUF-1H
MOV R1,A
MOV MTD+01H,@R1
MOV SLA,#ZLG7290 ;將MTD的數據發送給7290,進行顯示
MOV SUBA,#07H
MOV NUMBYTE,#02H
ACALL IWRNBYTE
ACALL DELAY
DJNZ R7,LOOP
RET
;**************
;延時子程序
;**************
DELAY:
MOV R6,#040H
DELAY0:
MOV R5,#010H
DELAY1:
DJNZ R5,DELAY1
DJNZ R6,DELAY0
RET
$INCLUDE (VI2C_ASM.INC) ;包含VI2C平臺軟件包
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -