📄 mytest.s
字号:
cpu LMM
.module mytest.c
.area data(ram, con, rel)
_AppBuf::
.byte 0,1
.byte 2,3
.byte 4,5
.byte 6,7
.byte 8,9
.byte 10,11
.byte 12,13
.byte 14,15
.dbfile ./mytest.c
.dbsym e AppBuf _AppBuf A[16:16]c
.area data(ram, con, rel)
.dbfile ./mytest.c
.area text(rom, con, rel)
.dbfile ./mytest.c
.dbfunc e radio_driver_init_test _radio_driver_init_test fV
; temp -> X+0
_radio_driver_init_test::
.dbline -1
push X
mov X,SP
add SP,1
.dbline 20
; #include "mytest.h"
; #include "lpradio.h"
; #include "psocgpioint.h"
; #ifdef MY_TEST
;
; #define RED_ON nLED2_Data_ADDR &=~nLED2_MASK
;
; #define RED_OFF nLED2_Data_ADDR |=nLED2_MASK
;
; #define GREEN_ON nLED1_Data_ADDR &=~nLED1_MASK
;
; #define GREEN_OFF nLED1_Data_ADDR |=nLED1_MASK
;
; //testing radio/////////////////////////////////////
; unsigned char AppBuf[16]={
; 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
; };
;
; void radio_driver_init_test(void)
; {
.dbline 24
;
; // Initialization, test spi
; unsigned char temp;
; RED_OFF;
or REG[ 0],-128
.dbline 28
; // Initialize radio for:
; // CH=96, PN=2, ACK EN, ACK TO=8x, 125kbps, 8DR-64, SOP64,
; // PA=7, SOP EN, SOP64, LEN EN, SOPTH=14, TH64=14, TH32=4
; RadioInit(0x85, 0x2F); // TX_CFG_ADR, XACT_CFG_ADR
push X
mov X,47
mov A,-123
xcall _RadioInit
.dbline 32
; // Configure the Radio
; // RadioInit(ACK_EN|END_STATE_RX|ACK_TO_8X, 6|DATCODE_LEN_32|DATMODE_8DR);
;
; RadioSetFrequency(3); // Set the transmit frequency (2400MHz + CHANNEL)
mov A,3
xcall _RadioSetFrequency
.dbline 34
;
; RadioSetThreshold32(0x05); //
mov A,5
xcall _RadioSetThreshold32
.dbline 35
; RadioSetThreshold64(0x0e); // 0x0E
mov A,14
xcall _RadioSetThreshold64
.dbline 37
;
; RadioSetFrameConfig(0xee); //0xEE
mov A,-18
xcall _RadioSetFrameConfig
.dbline 38
; temp = RadioGetFrameConfig();
xcall _RadioGetFrameConfig
mov REG[0xd0],>__r0
pop X
mov [X+0],A
.dbline 40
;
; RadioSetSopPnCode(0x04); // Change the PN Code for the Start of Packet
push X
mov A,4
xcall _RadioSetSopPnCode
.dbline 42
;
; RadioSetPtr(AppBuf);
mov A,>_AppBuf
push A
mov A,<_AppBuf
mov X,A
pop A
xcall _RadioSetPtr
.dbline 43
; RadioSetLength(sizeof(AppBuf));
mov A,16
xcall _RadioSetLength
pop X
xjmp L3
L2:
.dbline 47
.dbline 48
push X
mov X,16
mov A,-6
xcall _RadioBlockingTransmit
mov REG[0xd0],>__r0
pop X
.dbline 49
L3:
.dbline 46
xjmp L2
X0:
.dbline -2
.dbline 52
;
; // test block transmit
; while(1)
; {
; RadioBlockingTransmit(250,16);
; }
;
;
; }
L1:
add SP,-1
pop X
.dbline 0 ; func end
ret
.dbsym l temp 0 c
.dbend
.dbfunc e radio_driver_send_test _radio_driver_send_test fV
; radiostate -> X+0
; data -> X-4
_radio_driver_send_test::
.dbline -1
push X
mov X,SP
add SP,1
.dbline 54
; void radio_driver_send_test(char data)
; {
.dbline 56
; unsigned char radiostate;
; AppBuf[0]= data;
mov A,[X-4]
mov REG[0xd0],>_AppBuf
mov [_AppBuf],A
.dbline 57
; RadioSetPtr(AppBuf);
push X
mov A,>_AppBuf
push A
mov A,<_AppBuf
mov X,A
pop A
xcall _RadioSetPtr
.dbline 58
; radiostate = RadioBlockingTransmit(1,16);
mov X,16
mov A,1
xcall _RadioBlockingTransmit
mov REG[0xd0],>__r0
pop X
mov [X+0],A
.dbline -2
.dbline 60
;
; }
L5:
add SP,-1
pop X
.dbline 0 ; func end
ret
.dbsym l radiostate 0 c
.dbsym l data -4 c
.dbend
.dbfunc e radio_driver_receive_poll _radio_driver_receive_poll fV
; RxLen -> X+1
; radiostate -> X+0
_radio_driver_receive_poll::
.dbline -1
push X
mov X,SP
add SP,2
.dbline 62
; void radio_driver_receive_poll(void)
; {
.dbline 65
; // test receive
; unsigned char radiostate,RxLen;
; RadioStartReceive();
push X
xcall _RadioStartReceive
pop X
xjmp L8
L7:
.dbline 67
; while(1)
; {
.dbline 68
; radiostate = RadioGetReceiveState();
push X
xcall _RadioGetReceiveState
mov REG[0xd0],>__r0
pop X
mov [X+0],A
.dbline 69
; if((radiostate & (RADIO_ERROR | RADIO_COMPLETE))==RADIO_COMPLETE)
mov A,[X+0]
and A,3
cmp A,2
jnz L10
.dbline 70
; {
.dbline 71
; RxLen = RadioEndReceive();
push X
xcall _RadioEndReceive
mov REG[0xd0],>__r0
pop X
mov [X+1],A
.dbline 72
; if(RxLen>0 && RxLen != 0xff)
mov A,0
cmp A,[X+1]
jnc L12
X2:
cmp [X+1],-1
jz L12
.dbline 73
; {
.dbline 74
; if(AppBuf[0])
mov REG[0xd0],>_AppBuf
cmp [_AppBuf],0
jz L14
.dbline 75
; {
.dbline 76
; RED_ON;
and REG[ 0],127
.dbline 77
; }
xjmp L15
L14:
.dbline 79
; else
; {
.dbline 80
; RED_OFF;
or REG[ 0],-128
.dbline 81
; }
L15:
.dbline 82
; }
L12:
.dbline 83
; RadioStartReceive();
push X
xcall _RadioStartReceive
pop X
.dbline 84
xjmp L11
L10:
.dbline 84
; }else if(radiostate & RADIO_ERROR)
tst [X+0],1
jz L16
.dbline 85
; {
.dbline 86
; RxLen = RadioEndReceive();
push X
xcall _RadioEndReceive
mov REG[0xd0],>__r0
pop X
mov [X+1],A
.dbline 87
; RadioStartReceive();
push X
xcall _RadioStartReceive
pop X
.dbline 88
; }
L16:
L11:
.dbline 89
L8:
.dbline 66
xjmp L7
X1:
.dbline -2
.dbline 90
; }
; }
L6:
add SP,-2
pop X
.dbline 0 ; func end
ret
.dbsym l RxLen 1 c
.dbsym l radiostate 0 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -