?? rf905rx.asm
字號:
E1 BIT P1.1
E2 BIT P1.2
RS BIT P1.0 ;向液晶讀寫指令數(shù)據(jù)
CD BIT P3.0
AM BIT P3.1
DR BIT P3.2
MISO BIT P3.4
MOSI BIT P3.5
SCK BIT P3.6
CSN BIT P3.7
TRX_CE BIT P1.7
PWR_UP BIT P1.6
TX_EN BIT P1.5
CHARC EQU 40H ; 液晶顯示時調(diào)用的三個參量
PAGE1 EQU 41H
COLUMN EQU 42H
WC EQU 00H ;寫配置寄存器
RC EQU 10H ;讀配置寄存器
WTP EQU 20H ;向TX-PAYLOAD寄存器寫入發(fā)送數(shù)據(jù)
RTP EQU 21H ;從TX-PAYLOAD寄存器讀取有效數(shù)據(jù)
WTA EQU 22H ;向TX-ADDRESS 寄存器寫入發(fā)送數(shù)據(jù)
RTA EQU 23H ;向TX-ADDRESS 寄存器讀取發(fā)送數(shù)據(jù)
RRP EQU 24H ;從RX-PAYLOAD寄存器讀取接收到的有效數(shù)據(jù)
BUF EQU 70H
ORG 0000H
JMP MAIN
ORG 100H
MAIN:
MOV SP,#30H
MOV A,#00H ;累加器清零
MOV P1,A ;清輸入輸出 液晶初始化
LCALL INITM ; 初始化
LCALL MS200 ; 調(diào)用延時
LCALL BLACK1 ; 在屏幕上寫入FF
LCALL MS200 ;
LCALL WHITE1 ; 清屏
LCALL MS200
MOV DPTR,#TX_BUF
MOV A,#0
MOVC A,@A+DPTR
MOV R7,A
MOV R1,#0
CALL DISPBYTE1
CALL INIT905
CALL CONFIGWORD
t2:
CALL SET_RXMODE
MOV R1,#16
MOV A,#6
CALL DISPBYTE2
CALL DELAY650
CALL DELAY650
CALL DELAY650
CALL delay650
CALL TEST_RXREADY
MOV R1,#32
MOV A,#1
CALL DISPBYTE2
CALL SET_STBY
CALL RD_DATA
MOV R0,#BUF
MOV A,@R0
MOV R1,#0
INC R0
CALL DISPBYTE
MOV A,@R0
MOV R1,#16
INC R0
CALL DISPBYTE
MOV A,@R0
MOV R1,#32
INC R0
CALL DISPBYTE
MOV A,@R0
MOV R1,#48
INC R0
CALL DISPBYTE
MOV A,@R0
MOV R1,#0
INC R0
CALL DISPBYTE1
MOV A,@R0
MOV R1,#16
INC R0
CALL DISPBYTE1
MOV A,@R0
MOV R1,#32
INC R0
CALL DISPBYTE1
MOV A,@R0
MOV R1,#48
INC R0
CALL DISPBYTE1
TTT: JMP t2
/* MOV A,R7
MOV R3,BUF
SUBB A,R3
MOV R0,BUF
MOV R3,A
MOV R3,#3
MOV R1,#1
*/
DISPLAY1:
MOV A,@R0
INC R0
CALL DISPBYTE
MOV A,R1
ADD A,#8
MOV R1,A
DJNZ R3,DISPLAY1
;*========= 905的初始化;
INIT905:
SETB CSN
CLR SCK
SETB DR
SETB AM
SETB CD
SETB PWR_UP
CLR TRX_CE
CLR TX_EN
RET
; =========== 寫入配置字;
CONFIGWORD:
CLR CSN
MOV A,#WC
CALL SPI_WR
MOV R1,#10
MOV DPTR,#CONFIG
MOV R5,#0
CONF1:
MOV A,R5
MOVC A,@A+DPTR
CALL SPI_WR
INC R5
DJNZ R1,CONF1
SETB CSN
RET
; ============ 寫入要發(fā)送的數(shù)據(jù)
WR_DATA:
CLR CSN
MOV A,#WTP
CALL SPI_WR
MOV R1,#8 ;DATA LENGTH
MOV DPTR,#TX_BUF ;DATA ADDRESS
MOV R5,#0
WR_DA1:
MOV A,R5
MOVC A,@A+DPTR
CALL SPI_WR
INC R5
DJNZ R1,WR_DA1
SETB CSN
RET
;========== 寫入要發(fā)送到的地址信息
WR_ADDR:
CLR CSN
MOV A,#WTA
CALL SPI_WR
MOV R1,#4
MOV DPTR,#TX_ADDRESS
MOV R5,#0
WR_ADDR1:
MOV A,R5
MOVC A,@A+DPTR
CALL SPI_WR
INC R5
DJNZ R1,WR_ADDR1
SETB CSN
RET
; ========= 向905寫A內(nèi)容
SPI_WR:
MOV R3,#8
SPI1:
CLR SCK
RLC A
JNC SPI2
SETB MOSI
JMP SPI3
SPI2:
CLR MOSI
SPI3:
SETB SCK
DJNZ R3,SPI1
CLR SCK
RET
; ========== 從905讀數(shù)據(jù) ->A
SPI_READ:
MOV R3,#8
SPI_R1:
SETB SCK
NOP
JNB MISO,SPI_R2
SETB C
JMP SPI_R3
SPI_R2:
CLR C
SPI_R3:
RLC A
CLR SCK
DJNZ R3,SPI_R1
RET
;*******************接收數(shù)據(jù)************
; ======== 接收數(shù)據(jù)準(zhǔn)備好
TEST_RXREADY:
JNB DR,TEST_RXREADY
CLR TRX_CE
RET
; ======== 讀取數(shù)據(jù) ;
RD_DATA:
CLR CSN
MOV R0,#BUF
MOV A,#RRP
CALL SPI_WR
RD_DATA1:
CALL SPI_READ
MOV @R0,A
INC R0
CALL SPI_READ
MOV @R0,A
INC R0
JB DR,RD_DATA1
SETB CSN
RET
;************************設(shè)置發(fā)送模式;
SET_TXMODE:
SETB TX_EN
SETB TRX_CE
CALL DELAY650
RET
;***********************************
;************************設(shè)置接收模式:
SET_RXMODE:
SETB TRX_CE
CLR TX_EN
CALL DELAY650
RET
;*************************************
;***********************設(shè)置standby和SPI編程模式:
SET_STBY:
CLR TRX_CE
CALL DELAY650
RET
;*****************************************
;***********************延時650us
DELAY650:
MOV R4,#13
DELAY1:
MOV R5,#23
DJNZ R5,$
DJNZ R4,DELAY1
RET
;*****************************************************
;顯示模塊
;*****************************************************
DISPCHAR:
MOV PAGE1,#0BaH
MOV COLUMN,R1
MOV CHARC,A ;WRITE A CHINESE(16X16 DOTS)轉(zhuǎn)
LCALL NUMBERL
RET
DISPBYTE:
MOV R2,A
RR A
RR A
RR A
RR A
ANL A,#0FH
CALL DISPCHAR
MOV A,R1
ADD A,#8
MOV R1,A
MOV A,R2
ANL A,#0FH
CALL DISPCHAR
RET
DISPCHAR1:
MOV PAGE1,#0BAH
MOV COLUMN,R1
MOV CHARC,A ;WRITE A CHINESE(16X16 DOTS)轉(zhuǎn)
LCALL NUMBERR
RET
DISPBYTE1:
MOV R2,A
RR A
RR A
RR A
RR A
ANL A,#0FH
CALL DISPCHAR1
MOV A,R1
ADD A,#8
MOV R1,A
MOV A,R2
ANL A,#0FH
CALL DISPCHAR1
RET
DISPCHAR2:
MOV PAGE1,#0B8H
MOV COLUMN,R1
MOV CHARC,A ;WRITE A CHINESE(16X16 DOTS)轉(zhuǎn)
LCALL NUMBERL
RET
DISPBYTE2:
MOV R2,A
RR A
RR A
RR A
RR A
ANL A,#0FH
CALL DISPCHAR2
MOV A,R1
ADD A,#8
MOV R1,A
MOV A,R2
ANL A,#0FH
CALL DISPCHAR2
RET
;%^^^^^^^^^^^^^^^^^^^^^^^液晶顯示工具程序集^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^%
CHINAR: ;左漢字
MOV A,CHARC ;CHAR CODE IN *.LIB
MOV DPTR,#TABLE1
MOV B,#032
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV R5,#32
MOV A,PAGE1
LCALL WMI
MOV A,COLUMN
LCALL WMI
CHL1:
MOV A,#00H
MOVC A,@A+DPTR
LCALL WMD
INC DPTR
DEC R5
CJNE R5,#16,CHL1
INC PAGE1
MOV A,PAGE1
LCALL WMI
MOV A,COLUMN
LCALL WMI
CHL2:
MOV A,#00H
MOVC A,@A+DPTR
LCALL WMD
INC DPTR
DJNZ R5,CHL2
RET
NUMBERR: ;左數(shù)字
MOV A,CHARC ;CHAR CODE IN *.LIB
MOV DPTR,#TABLE
MOV B,#016
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV R5,#16
MOV A,PAGE1
LCALL WMI
MOV A,COLUMN
LCALL WMI
NUML1:
MOV A,#00H
MOVC A,@A+DPTR
LCALL WMD
INC DPTR
DEC R5
CJNE R5,#8,NUML1
INC PAGE1
MOV A,PAGE1
LCALL WMI
MOV A,COLUMN
LCALL WMI
NUML2:
MOV A,#00H
MOVC A,@A+DPTR
LCALL WMD
INC DPTR
DJNZ R5,NUML2
RET
NUMBERL: ;右數(shù)字
MOV A,CHARC ;CHAR CODE IN *.LIB
MOV DPTR,#TABLE
MOV B,#016
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV R5,#16
MOV A,PAGE1 ; 頁設(shè)置
LCALL WSI
MOV A,COLUMN
LCALL WSI
NUMR1:
MOV A,#00H
MOVC A,@A+DPTR
LCALL WSD
INC DPTR
DEC R5
CJNE R5,#8,NUMR1
INC PAGE1
MOV A,PAGE1
LCALL WSI
MOV A,COLUMN
LCALL WSI
NUMR2:
MOV A,#00H
MOVC A,@A+DPTR
LCALL WSD
INC DPTR
DJNZ R5,NUMR2
RET
CHINAL: ;右漢字
MOV A,CHARC ;CHAR CODE IN *.LIB
MOV DPTR,#TABLE1
MOV B,#032
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV R5,#32
MOV A,PAGE1
LCALL WSI
MOV A,COLUMN
LCALL WSI
CHR1:
MOV A,#00H
MOVC A,@A+DPTR
LCALL WSD
INC DPTR
DEC R5
CJNE R5,#16,CHR1
INC PAGE1
MOV A,PAGE1
LCALL WSI
MOV A,COLUMN
LCALL WSI
CHR2:
MOV A,#00H
MOVC A,@A+DPTR
LCALL WSD
INC DPTR
DJNZ R5,CHR2
RET
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
BLACK1:
MOV R2,#04H
MOV R1,#0B8H
B12: MOV R0,#61
MOV A,R1
LCALL WMI
LCALL WSI
MOV A,#00H
LCALL WMI
LCALL WSI
B11: MOV A,#0FFH
LCALL WMD
LCALL WSD
DJNZ R0,B11
INC R1
DJNZ R2,B12
RET
;**********************************************
WHITE1: ;清屏CLEAR SCREEN
MOV R2,#04H
MOV R1,#0B8H
W2: MOV R0,#61
MOV A,R1 ;SET PAGE
LCALL WMI
LCALL WSI
MOV A,#00H ;SET COLUMN
LCALL WMI
LCALL WSI
W1: MOV A,#00H
LCALL WMD
LCALL WSD
DJNZ R0,W1
INC R1
DJNZ R2,W2
RET
;**********************************************
INITM:
MOV A,#0E2H
LCALL WMI ;RESET MASTER
LCALL WSI ;RESET SLAVE
MOV A,#0AEH
LCALL WMI ;OFF MASTER DISPLAY
LCALL WSI ;OFF SLAVE DISPLAY
MOV A,#0A4H
LCALL WMI ;OFF MASTER STATIC DRIVE 關(guān)閉靜態(tài)顯示;
LCALL WSI ;OFF SLAVE STATIC DRIVE
MOV A,#0A9H
LCALL WMI ;MASTER SELECT 1/32 DUTY
LCALL WSI ;SLAVE SELECT 1/32 DUTY
MOV A,#0A0H
LCALL WMI ;MASTER ADC SELECT:RIGHTWARD OUTPUT 設(shè)置顯示方向 正向;
LCALL WSI ;SLAVE ADC SELECT:RIGHTWARD OUTPUT
MOV A,#0EEH
LCALL WMI ;MASTER READ MODIFY WRITE OFF 關(guān)閉“讀修改寫”模式
LCALL WSI ;SLAVE READ MODIFY WRITE OFF
MOV A,#0C0H
LCALL WMI ;MASTER DISPLAY START LINE:0 設(shè)置起始的行數(shù)為0
LCALL WSI ;SLAVE DISPLAY START LINE :0
MOV A,#00H
LCALL WMI ;MASTER COLUMN ADDRESS OF DISPLAY RAM SET 起始的列數(shù)為0;
LCALL WSI ;SLAVE COLUMN ADDRESS OF DISPLAY RAM SET
MOV A,#0AFH
LCALL WMI ;ON DISPLAY MASTER 開顯示和關(guān)顯示就差最后一位的1;
LCALL WSI ;ON DISPLAY SLAVE
RET
;**********************************************
WMI:
CLR RS
CLR RS
CLR E2
CLR E2
SETB E1
SETB E1
MOV p0,A
MOV p0,A
CLR E1
CLR E1
RET
;**********************************************
WSI:
CLR RS
CLR RS
CLR E1
CLR E1
SETB E2
SETB E2
MOV p0,A
MOV p0,A
CLR E2
CLR E2
RET
;**********************************************
WMD: SETB RS
SETB RS
CLR E2
CLR E2
SETB E1
SETB E1
MOV p0,A
MOV p0,A
CLR E1
CLR E1
RET
;**********************************************
WSD: SETB RS
SETB RS
CLR E1
CLR E1
SETB E2
SETB E2
MOV p0,A
MOV p0,A
CLR E2
CLR E2
RET
;**********************************************
MS200:
MOV R4,#00H
MS10: MOV R3,#0AAH
MS1: NOP
NOP
DJNZ R3,MS1
DJNZ R4,MS10
RET
;**********************************************************************************************
CONFIG: DB 0x4c, 0x0c, 0x44, 0x8, 0x8, 0xDD, 0xDD, 0xDD, 0xDD, 0x58
TX_BUF: DB 0x09,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20; 10111011B;A
DB 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00; B
TX_ADDRESS: DB 0xCC,0xCC,0xCC,0xCC
TRANSTABLE:
DB 0X0D,0X0E,0X0F,0X0C,0X09,0X0A,0X0B,0X08
DB 0X05,0X06,0X07,0X04,0X01,0X02,0X03,0X00
TABLE:
DB 000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,00FH,010H,020H,020H,010H,00FH,000H; ;0
DB 000H,010H,010H,0F8H,000H,000H,000H,000H,000H,020H,020H,03FH,020H,020H,000H,000H; ;1
DB 000H,070H,008H,008H,008H,088H,070H,000H,000H,030H,028H,024H,022H,021H,030H,000H; ;2
DB 000H,030H,008H,088H,088H,048H,030H,000H,000H,018H,020H,020H,020H,011H,00EH,000H; ;3
DB 000H,000H,0C0H,020H,010H,0F8H,000H,000H,000H,007H,004H,024H,024H,03FH,024H,000H ;4
DB 000H,0F8H,008H,088H,088H,008H,008H,000H,000H,019H,021H,020H,020H,011H,00EH,000H ;5
DB 000H,0E0H,010H,088H,088H,018H,000H,000H,000H,00FH,011H,020H,020H,011H,00EH,000H ;6
DB 000H,038H,008H,008H,0C8H,038H,008H,000H,000H,000H,000H,03FH,000H,000H,000H,000H ;7
DB 000H,070H,088H,008H,008H,088H,070H,000H,000H,01CH,022H,021H,021H,022H,01CH,000H; ;8
DB 000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,000H,031H,022H,022H,011H,00FH,000H; ;9
DB 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20; ;A
DB 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00; ;B
DB 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00 ;C
DB 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00 ;D
DB 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00 ;E
DB 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00 ;F
TABLE0:
;-- 文字: 0 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,00FH,010H,020H,020H,010H,00FH,000H
;-- 文字: 1 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,010H,010H,0F8H,000H,000H,000H,000H,000H,020H,020H,03FH,020H,020H,000H,000H
;-- 文字: 2 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,070H,008H,008H,008H,088H,070H,000H,000H,030H,028H,024H,022H,021H,030H,000H
;-- 文字: 3 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,030H,008H,088H,088H,048H,030H,000H,000H,018H,020H,020H,020H,011H,00EH,000H
;-- 文字: 4 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,000H,0C0H,020H,010H,0F8H,000H,000H,000H,007H,004H,024H,024H,03FH,024H,000H
;-- 文字: 5 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,0F8H,008H,088H,088H,008H,008H,000H,000H,019H,021H,020H,020H,011H,00EH,000H
;-- 文字: 6 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,0E0H,010H,088H,088H,018H,000H,000H,000H,00FH,011H,020H,020H,011H,00EH,000H
;-- 文字: 7 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,038H,008H,008H,0C8H,038H,008H,000H,000H,000H,000H,03FH,000H,000H,000H,000H
;-- 文字: 8 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,070H,088H,008H,008H,088H,070H,000H,000H,01CH,022H,021H,021H,022H,01CH,000H
;-- 文字: 9 --
;-- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 --
DB 000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,000H,031H,022H,022H,011H,00FH,000H
;A:
DB 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20
;B
DB 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00
;C:
DB 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00
;D;
DB 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00
;E
DB 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00
;F
DB 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00
TABLE1:
//對齊方式:左上
//橫向取模 高位在左
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -