📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_hz0::
.blkb 65
.area idata
.byte 214,199,196,220,188,210,181,231,191,216,214,198,207,181,205,179
.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
.byte 202,228,200,235,32,32,32,32,32,32,32,32,32,32,32,32
.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
.byte 0
.area data(ram, con, rel)
.dbfile F:\programme\nrf2401\main.c
.dbsym e hz0 _hz0 A[65:65]c
_KeyFlag::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\programme\nrf2401\main.c
.dbsym e KeyFlag _KeyFlag c
_zhishi::
.blkb 1
.area idata
.byte 123
.area data(ram, con, rel)
.dbfile F:\programme\nrf2401\main.c
.dbsym e zhishi _zhishi c
.area text(rom, con, rel)
.dbfile F:\programme\nrf2401\main.c
.dbfunc e main _main fV
; i -> <dead>
; detect -> <dead>
; kk -> R10
; KeyValue -> R22
.even
_main::
sbiw R28,2
.dbline -1
.dbline 12
; #include <stdio.h>
; #include <iom8v.h>
; #include <macros.h>
; #include "config.h"
; unsigned char hz0[65]={"智能家电控制系统 输入 "};
; unsigned char KeyFlag=0;
; uchar zhishi=123;
; unsigned char KeyI[3];
; extern uchar TxBuf[],RxBuf[];
;
; void main(void)
; { uchar KeyValue,kk,detect;
.dbline 14
; uint i;
; init_devices();
rcall _init_devices
.dbline 15
; screen(hz0);
ldi R16,<_hz0
ldi R17,>_hz0
rcall _screen
rjmp L3
L2:
.dbline 20
;
; // display_int(KeyI,0x88,3);
;
; while(1)
; {
.dbline 21
; RfRecvProc();
rcall _RfRecvProc
.dbline 22
; if(KeyFlag==1)
lds R24,_KeyFlag
cpi R24,1
brne L5
.dbline 23
; {
.dbline 24
; KeyFlag=0;
clr R2
sts _KeyFlag,R2
.dbline 25
; KeyValue=KeyI[2];
lds R22,_KeyI+2
.dbline 26
; }
L5:
.dbline 29
; // displayint(0x9d,KeyValue);
;
; switch(KeyValue)
mov R20,R22
clr R21
cpi R20,105
ldi R30,0
cpc R21,R30
brne X2
rjmp L12
X2:
cpi R20,107
ldi R30,0
cpc R21,R30
brne X3
rjmp L16
X3:
cpi R20,108
ldi R30,0
cpc R21,R30
brne X4
rjmp L19
X4:
cpi R20,112
ldi R30,0
cpc R21,R30
breq L11
cpi R20,114
ldi R30,0
cpc R21,R30
brne X5
rjmp L13
X5:
cpi R20,115
ldi R30,0
cpc R21,R30
brne X6
rjmp L17
X6:
cpi R20,116
ldi R30,0
cpc R21,R30
brne X7
rjmp L18
X7:
cpi R20,117
ldi R30,0
cpc R21,R30
brne X8
rjmp L20
X8:
cpi R20,122
ldi R30,0
cpc R21,R30
brne X9
rjmp L15
X9:
ldi R24,122
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L24
L23:
cpi R20,90
ldi R30,0
cpc R21,R30
brne X10
rjmp L22
X10:
rjmp L8
L24:
cpi R20,125
ldi R30,0
cpc R21,R30
brne X11
rjmp L21
X11:
rjmp L8
X0:
.dbline 30
; {
L11:
.dbline 31
; case 112:kk=0; displayint(0x98,kk);
clr R10
.dbline 31
mov R18,R10
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 32
; nrf2401A_SendData();
rcall _nrf2401A_SendData
.dbline 33
; delay(2000);
ldi R16,2000
ldi R17,7
rcall _delay
.dbline 34
; nrf2401A_RxOn();
rcall _nrf2401A_RxOn
.dbline 35
; KeyValue=0; break;
clr R22
.dbline 35
rjmp L9
L12:
.dbline 36
; case 105:kk=1;displayint(0x98,kk);
clr R10
inc R10
.dbline 36
mov R18,R10
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 37
; display_int(RxBuf,0x80,12);KeyValue=0;break;
ldi R24,12
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,128
ldi R19,0
ldi R16,<_RxBuf
ldi R17,>_RxBuf
rcall _display_int
.dbline 37
clr R22
.dbline 37
rjmp L9
L13:
.dbline 38
; case 114:kk=2;displayint(0x98,kk);
ldi R24,2
mov R10,R24
.dbline 38
mov R18,R24
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 39
; display_int(RxBuf+12,0x80,12);KeyValue=0;break;
ldi R24,12
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,128
ldi R19,0
ldi R16,<_RxBuf+12
ldi R17,>_RxBuf+12
rcall _display_int
.dbline 39
clr R22
.dbline 39
rjmp L9
L15:
.dbline 40
; case 122:kk=3;displayint(0x98,kk);KeyValue=0;break;
ldi R24,3
mov R10,R24
.dbline 40
mov R18,R24
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 40
clr R22
.dbline 40
rjmp L9
L16:
.dbline 41
; case 107:kk=4;displayint(0x98,kk);zhishi++;
ldi R24,4
mov R10,R24
.dbline 41
mov R18,R24
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 41
lds R24,_zhishi
subi R24,255 ; addi 1
sts _zhishi,R24
.dbline 42
; displayint(0x9a,zhishi);
mov R18,R24
clr R19
ldi R16,154
ldi R17,0
rcall _displayint
.dbline 43
; nrf2401A_WR(0xa5);
ldi R16,165
ldi R17,0
rcall _nrf2401A_WR
.dbline 44
; KeyValue=0;break;
clr R22
.dbline 44
rjmp L9
L17:
.dbline 46
;
; case 115:kk=5;displayint(0x98,kk);
ldi R24,5
mov R10,R24
.dbline 46
mov R18,R24
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 47
; zhishi=nrf2401A_RD();
rcall _nrf2401A_RD
sts _zhishi,R16
.dbline 48
; displayint(0x9a,zhishi);
mov R18,R16
clr R19
ldi R16,154
ldi R17,0
rcall _displayint
.dbline 49
; KeyValue=0;break;
clr R22
.dbline 49
rjmp L9
L18:
.dbline 50
; case 116:kk=6;displayint(0x98,kk);KeyValue=0;break;
ldi R24,6
mov R10,R24
.dbline 50
mov R18,R24
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 50
clr R22
.dbline 50
rjmp L9
L19:
.dbline 51
; case 108:kk=7;displayint(0x98,kk);KeyValue=0;break;
ldi R24,7
mov R10,R24
.dbline 51
mov R18,R24
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 51
clr R22
.dbline 51
rjmp L9
L20:
.dbline 52
; case 117:kk=8;displayint(0x98,kk);KeyValue=0;break;
ldi R24,8
mov R10,R24
.dbline 52
mov R18,R24
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 52
clr R22
.dbline 52
rjmp L9
L21:
.dbline 53
; case 125:kk=9;displayint(0x98,kk);KeyValue=0;break;
ldi R24,9
mov R10,R24
.dbline 53
mov R18,R24
clr R19
ldi R16,152
ldi R17,0
rcall _displayint
.dbline 53
clr R22
.dbline 53
rjmp L9
L22:
.dbline 54
; case 90: kk='k'; KeyValue=0;
ldi R24,107
mov R10,R24
.dbline 54
clr R22
.dbline 55
; lcd_write_comm(0x98);
ldi R16,152
ldi R17,0
rcall _lcd_write_comm
.dbline 56
; lcd_write_data('k');
ldi R16,107
ldi R17,0
rcall _lcd_write_data
.dbline 57
; break;
rjmp L9
L8:
.dbline 58
; default :KeyValue=0;break;
clr R22
.dbline 58
L9:
.dbline 62
L3:
.dbline 19
rjmp L2
X1:
.dbline -2
L1:
adiw R28,2
.dbline 0 ; func end
ret
.dbsym l i 3 i
.dbsym l detect 3 c
.dbsym r kk 10 c
.dbsym r KeyValue 22 c
.dbend
.area vector(rom, abs)
.org 2
rjmp _int0_isr
.area text(rom, con, rel)
.dbfile F:\programme\nrf2401\main.c
.area data(ram, con, rel)
.dbfile F:\programme\nrf2401\main.c
L26:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\programme\nrf2401\main.c
L27:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\programme\nrf2401\main.c
.area text(rom, con, rel)
.dbfile F:\programme\nrf2401\main.c
.dbfunc e int0_isr _int0_isr fV
.dbsym s index L27 c
.dbsym s IntNum L26 c
.even
_int0_isr::
st -y,R2
st -y,R3
st -y,R4
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R2,0x3f
st -y,R2
.dbline -1
.dbline 68
; }
;
;
; }
; }
;
;
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
.dbline 71
; static unsigned char IntNum=0,index=0;
;
; if((IntNum>0)&&(IntNum<9))
clr R2
lds R3,L26
cp R2,R3
brsh L28
mov R24,R3
cpi R24,9
brsh L28
.dbline 72
; {
.dbline 73
; KeyI[index]>>=1;
ldi R24,<_KeyI
ldi R25,>_KeyI
lds R2,L27
clr R3
add R2,R24
adc R3,R25
movw R30,R2
ldd R4,z+0
lsr R4
std z+0,R4
.dbline 74
; if(PINB&0x80)
sbis 0x16,7
rjmp L30
.dbline 75
; KeyI[index]|=0x80;
lds R2,L27
clr R3
add R2,R24
adc R3,R25
movw R30,R2
ldd R24,z+0
ori R24,128
std z+0,R24
L30:
.dbline 76
; }
L28:
.dbline 78
;
; IntNum++;
lds R24,L26
subi R24,255 ; addi 1
sts L26,R24
.dbline 80
; // while (!Key_CLK); //等待PS/2CLK拉高 use??????
; if(IntNum>10)
ldi R24,10
lds R2,L26
cp R24,R2
brsh L32
.dbline 81
; {
.dbline 82
; IntNum=0;
clr R2
sts L26,R2
.dbline 83
; index++;
lds R24,L27
subi R24,255 ; addi 1
sts L27,R24
.dbline 84
; if(index==3)
cpi R24,3
brne L34
.dbline 85
; {
.dbline 86
; IntNum=0;
sts L26,R2
.dbline 87
; index=0;
sts L27,R2
.dbline 88
; KeyFlag=1;
ldi R24,1
sts _KeyFlag,R24
.dbline 89
; }
L34:
.dbline 90
L32:
.dbline -2
L25:
ld R2,y+
out 0x3f,R2
ld R31,y+
ld R30,y+
ld R25,y+
ld R24,y+
ld R4,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.area bss(ram, con, rel)
.dbfile F:\programme\nrf2401\main.c
_KeyI::
.blkb 3
.dbsym e KeyI _KeyI A[3:3]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -