在淘寶網上買了兩塊nRF401無線數傳模塊。
與51系列單片機的接口設計如下:
Nrf401端 51單片機端
TXEN ----- P3.5
POUP ----- P3.6
GND ----- GND
D in ------ TXD(P3.1)
D out ----- RXD(P3.0)
VCC ----- VCC
發射和接收端的接線是一樣的。
采用匯編語言編寫的程序如下:
發射程序:
;這是一個AT89C51單片機向串口單向發送數據ASCII碼的演示程序
;串行口上可以直接接MAX232連接上DB9串口,或者連接nRF401模塊
;通訊波特率為9600KBPS,連續發送ASCII字符,延時一秒,0-9的循環。
;連線圖 TXEN -- P3.5
; POUP -- P3.6
; GND -- GND
; D in -- TXD (P3.1)
; D out -- RXD (P3.0)
; VCC -- VCC
;發射端的接法與接收端的接法是一樣的。
ORG 0000H
MOV SCON,#50H;設置成串口1方式
MOV TMOD,#20H;波特率發生器T1工作在模式2上
MOV PCON,#00H;波特率不翻倍
MOV TH1,#0FdH;預置初值(按照波特率9600BPS預置初值)
MOV TL1,#0FdH;預置初值(按照波特率9600BPS預置初值)
SETB TR1;啟動定時器T1
setb p3.5
setb p3.6 ;使txen為1 發射模式 poup為1 工作模式
;以上完成通訊初始化設置
begin:mov a,#00h ;將ascii字符發送到串口去
w2: MOV SBUF,A ;將字符通過串口發送出去
wait: jnb ti,wait
clr ti
PUSH ACC
CPL A
MOV P1,A
POP ACC
inc a
call yshi1
cjne a,#0Ah,w2
JMP begin
yshi1:clr ea
mov r7,#40;延時子程序(精確定時一秒#10)
d1:mov r6,#200
d2:mov r5,#229
djnz r5,$
djnz r6,d2
djnz r7,d1
setb ea
ret
END
;這是一個AT89C51單片機從串口單向接收數據ASCII碼的演示程序
;串行口上可以直接接MAX232連接上DB9串口,或者連接nRF401模塊
;通訊波特率為9600KBPS,接收ASCII字符
;連線圖 TXEN -- P3.5
; POUP -- P3.6
; GND -- GND
; D in -- TXD (P3.1)
; D out -- RXD (P3.0)
; VCC -- VCC
;發射端的接法與接收端的接法是一樣的。
ORG 0000H
MOV SCON,#50H;設置成串口1方式
MOV TMOD,#20H;波特率發生器T1工作在模式2上
MOV PCON,#00H;波特率不翻倍
MOV TH1,#0FdH;預置初值(按照波特率9600BPS預置初值)
MOV TL1,#0FdH;預置初值(按照波特率9600BPS預置初值)
SETB TR1;啟動定時器T1
CLR p3.5 ;使txen為0 接收模式
setb p3.6 ;使poup為1 工作模式
;以上完成通訊初始化設置
begin: MOV A,SBUF ;將字符通過串口接收
wait: jnb ri,wait
clr ri
cpl a
mov p1,a
JMP begin
END
與2009年7月19日調試成功。
是為記。
