📄 oled.lst
字号:
(0165) if(accept_flag=1)
B3 E081 LDI R24,1
B4 9380 0145 STS accept_flag,R24
B6 2388 TST R24
B7 F0E9 BEQ 0x00D5
(0166) {
(0167) accept_time++;
B8 9180 0146 LDS R24,accept_time
BA 9190 0147 LDS R25,accept_time+1
BC 9601 ADIW R24,1
BD 9390 0147 STS accept_time+1,R25
BF 9380 0146 STS accept_time,R24
(0168) delayms(100);
C1 E604 LDI R16,0x64
C2 E010 LDI R17,0
C3 D03C RCALL _delayms
(0169) if(accept_time>1000)
C4 EE88 LDI R24,0xE8
C5 E093 LDI R25,3
C6 9020 0146 LDS R2,accept_time
C8 9030 0147 LDS R3,accept_time+1
CA 1582 CP R24,R2
CB 0593 CPC R25,R3
CC F440 BCC 0x00D5
(0170) {
(0171) accept_flag=0;
CD 2422 CLR R2
CE 9220 0145 STS accept_flag,R2
(0172) accept_time=0;
D0 2433 CLR R3
D1 9230 0147 STS accept_time+1,R3
D3 9220 0146 STS accept_time,R2
D5 CF94 RJMP 0x006A
D6 9621 ADIW R28,1
D7 9508 RET
(0173) }
(0174) }
(0175) }
(0176)
(0177)
(0178) }
(0179) /*-----------------------------------------------------------------------------
(0180) Module: init_CPU
(0181) Function: Initialization of CPU
(0182) ------------------------------------------------------------------------------*/
(0183) void init_CPU (void)
(0184) {
(0185) MCUCR = 0x00; //
_init_CPU:
D8 2422 CLR R2
D9 BE25 OUT 0x35,R2
(0186) EICRA = 0x00; //extended ext ints
DA 9220 0069 STS 0x0069,R2
(0187) EIMSK = 0x00;
DC BA2D OUT 0x1D,R2
(0188)
(0189) TIMSK0 = 0x01; //timer 0 interrupt sources
DD E081 LDI R24,1
DE 9380 006E STS 0x006E,R24
(0190) TIMSK1 = 0x00; //timer 1 interrupt sources
E0 9220 006F STS 0x006F,R2
(0191) TIMSK2 = 0x00; //timer 2 interrupt sources
E2 9220 0070 STS 0x0070,R2
(0192) CLI(); //disable all interrupts
E4 94F8 BCLR 7
(0193) NOP();
E5 0000 NOP
(0194) PORTB = 0x81;
E6 E881 LDI R24,0x81
E7 B985 OUT 0x05,R24
(0195) DDRB = 0xf3;
E8 EF83 LDI R24,0xF3
E9 B984 OUT 0x04,R24
(0196) PORTD = 0x80;
EA E880 LDI R24,0x80
EB B98B OUT 0x0B,R24
(0197) DDRD = 0xff;
EC EF8F LDI R24,0xFF
ED B98A OUT 0x0A,R24
(0198) PORTC = 0x80;
EE E880 LDI R24,0x80
EF B988 OUT 0x08,R24
(0199) DDRC = 0x78;
F0 E788 LDI R24,0x78
F1 B987 OUT 0x07,R24
(0200) nRF24L01_CEL;
F2 985F CBI 0x0B,7
(0201) delay();
F3 D005 RCALL _delay
(0202) nRF24L01_CSNH; // Spi disable
F4 9A5E SBI 0x0B,6
(0203) delay();
F5 D003 RCALL _delay
(0204) nRF24L01_SCKL;
F6 9829 CBI 0x05,1
(0205) delay();
F7 D001 RCALL _delay
F8 9508 RET
(0206) }
(0207) void delay(void)//
(0208) {
(0209) NOP();
_delay:
F9 0000 NOP
(0210) NOP();
FA 0000 NOP
(0211) NOP();
FB 0000 NOP
(0212) NOP();
FC 0000 NOP
(0213) NOP();
FD 0000 NOP
(0214) NOP();
FE 0000 NOP
FF 9508 RET
(0215) }
(0216) void delayms(unsigned short dly)//
(0217) {
(0218) for(;dly>0;dly--) ;
_delayms:
dly --> R16
100 C002 RJMP 0x0103
101 5001 SUBI R16,1
102 4010 SBCI R17,0
103 3000 CPI R16,0
104 0701 CPC R16,R17
105 F7D9 BNE 0x0101
106 9508 RET
(0219) }
(0220)
(0221) void clear_buf(unsigned char *ptr,unsigned char number)//清零buffer,指定字节个数
(0222) {
(0223) for (;number>0;number--) *ptr++=0;
_clear_buf:
number --> R18
ptr --> R16
107 C005 RJMP 0x010D
108 2422 CLR R2
109 01F8 MOVW R30,R16
10A 9221 ST R2,Z+
10B 018F MOVW R16,R30
10C 952A DEC R18
10D E080 LDI R24,0
10E 1782 CP R24,R18
10F F3C0 BCS 0x0108
110 9508 RET
_SPI_RW:
bit_ctr --> R22
byte --> R20
111 D0C5 RCALL push_xgsetF000
112 2F40 MOV R20,R16
(0224) }
(0225) //------------------------------------------------------
(0226) /**************************************************
(0227) Function: SPI_RW();
(0228)
(0229) Description:
(0230) Writes one byte to nRF24L01, and return the byte read
(0231) from nRF24L01 during write, according to SPI protocol */
(0232) /**************************************************/
(0233) unsigned char SPI_RW(unsigned char byte)
(0234) {
(0235) unsigned char bit_ctr;
(0236) for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
113 2766 CLR R22
114 C00F RJMP 0x0124
(0237) {
(0238) if(byte & 0x80)
115 FF47 SBRS R20,7
116 C002 RJMP 0x0119
(0239) nRF24L01_MOSIH;
117 9A28 SBI 0x05,0
118 C001 RJMP 0x011A
(0240) else
(0241) nRF24L01_MOSIL;
119 9828 CBI 0x05,0
(0242) delay();
11A DFDE RCALL _delay
(0243) byte = (byte << 1); // shift next bit into MSB..
11B 0F44 LSL R20
(0244) nRF24L01_SCKH;
11C 9A29 SBI 0x05,1
(0245) delay();
11D DFDB RCALL _delay
(0246) if(PINB&0x08) byte |= 1;
11E 9B1B SBIS 0x03,3
11F C001 RJMP 0x0121
120 6041 ORI R20,1
(0247) nRF24L01_SCKL;
121 9829 CBI 0x05,1
(0248) delay();
122 DFD6 RCALL _delay
123 9563 INC R22
124 3068 CPI R22,0x8
125 F378 BCS 0x0115
(0249) }
(0250) return(byte); // return read byte
126 2F04 MOV R16,R20
127 C0B4 RJMP pop_xgsetF000
_SPI_RW_Reg:
status --> R10
value --> R12
reg --> R10
128 D0A9 RCALL push_xgset003C
129 2EC2 MOV R12,R18
12A 2EA0 MOV R10,R16
(0251) }
(0252) /**************************************************
(0253) Function: SPI_RW_Reg();
(0254)
(0255) Description:
(0256) Writes value 'value' to register 'reg' */
(0257) /**************************************************/
(0258) unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value)
(0259) {
(0260) unsigned char status;
(0261) nRF24L01_CSNL;
12B 985E CBI 0x0B,6
(0262) delay();
12C DFCC RCALL _delay
(0263) status = SPI_RW(reg); // select register
12D 2D0A MOV R16,R10
12E DFE2 RCALL _SPI_RW
12F 2EA0 MOV R10,R16
(0264) SPI_RW(value); // ..and write value to it..
130 2D0C MOV R16,R12
131 DFDF RCALL _SPI_RW
(0265) nRF24L01_CSNH;
132 9A5E SBI 0x0B,6
(0266) delay();
133 DFC5 RCALL _delay
(0267) return(status); // return nRF24L01 status byte
134 2D0A MOV R16,R10
135 C08A RJMP pop_xgset003C
_SPI_Read:
reg_val --> R10
reg --> R10
136 92AA ST R10,-Y
137 92BA ST R11,-Y
138 2EA0 MOV R10,R16
(0268) }
(0269) /**************************************************
(0270) Function: SPI_Read();
(0271)
(0272) Description:
(0273) Read one byte from nRF24L01 register, 'reg' */
(0274) /**************************************************/
(0275) unsigned char SPI_Read(unsigned char reg)
(0276) {
(0277) unsigned char reg_val;
(0278) nRF24L01_CSNL;
139 985E CBI 0x0B,6
(0279) delay();
13A DFBE RCALL _delay
(0280) SPI_RW(reg); // Select register to read from..
13B 2D0A MOV R16,R10
13C DFD4 RCALL _SPI_RW
(0281) reg_val = SPI_RW(0); // ..then read registervalue
13D 2700 CLR R16
13E DFD2 RCALL _SPI_RW
13F 2EA0 MOV R10,R16
(0282) nRF24L01_CSNH;
140 9A5E SBI 0x0B,6
(0283) delay();
141 DFB7 RCALL _delay
(0284) return(reg_val); // return register value
142 2D0A MOV R16,R10
143 90B9 LD R11,Y+
144 90A9 LD R10,Y+
145 9508 RET
_SPI_Read_Buf:
status --> R10
byte_ctr --> R12
bytes --> Y,+6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -