📄 cc2420.lis
字号:
01B0 4068 ori R20,128
01B2 .dbline 217
01B2 ; AddrL<<=6;
01B2 660F lsl R22
01B4 660F lsl R22
01B6 660F lsl R22
01B8 660F lsl R22
01BA 660F lsl R22
01BC 660F lsl R22
01BE .dbline 218
01BE ; AddrL&=0XDF; //读写操作位置0,表示写操作
01BE 6F7D andi R22,223
01C0 .dbline 220
01C0 ;
01C0 ; enable_spi(); //使能SPI口
01C0 0E940000 xcall _enable_spi
01C4 .dbline 221
01C4 ; statuevalue=SpiWrite(AddrH);
01C4 042F mov R16,R20
01C6 0E940000 xcall _SpiWrite
01CA 402F mov R20,R16
01CC .dbline 222
01CC ; SpiWrite(AddrL);
01CC 062F mov R16,R22
01CE 0E940000 xcall _SpiWrite
01D2 .dbline 224
01D2 ;
01D2 ; SpiWrite(p_Data);
01D2 0C81 ldd R16,y+4
01D4 0E940000 xcall _SpiWrite
01D8 .dbline 226
01D8 ;
01D8 ; disable_spi(); //禁止SPI口
01D8 0E940000 xcall _disable_spi
01DC .dbline 227
01DC ; return statuevalue;
01DC 042F mov R16,R20
01DE .dbline -2
01DE L24:
01DE 0E940000 xcall pop_gset2
01E2 .dbline 0 ; func end
01E2 0895 ret
01E4 .dbsym r statuevalue 20 c
01E4 .dbsym l p_Data 4 c
01E4 .dbsym r AddrL 22 c
01E4 .dbsym r AddrH 20 c
01E4 .dbend
01E4 .dbfunc e Read_RAM _Read_RAM fc
01E4 ; statuevalue -> R20
01E4 ; i -> R22
01E4 ; p_Data -> R10,R11
01E4 ; Data_Num -> R12
01E4 ; AddrL -> R22
01E4 ; AddrH -> R20
.even
01E4 _Read_RAM::
01E4 0E940000 xcall push_gset4
01E8 622F mov R22,R18
01EA 402F mov R20,R16
01EC C884 ldd R12,y+8
01EE AA84 ldd R10,y+10
01F0 BB84 ldd R11,y+11
01F2 .dbline -1
01F2 .dbline 240
01F2 ; }
01F2 ;
01F2 ; /*******************************************
01F2 ; *函数功能:读RAM
01F2 ; *输入参数:p_Data:存储数据的缓存首地址;
01F2 ; Data_Num:要读取的字节数
01F2 ; AddrH:在选定的RAM存储块中确定RAM地址
01F2 ; AddrL:选择RAM存储块
01F2 ; *输出参数:无
01F2 ; *返 回 值:状态寄存器的值
01F2 ; ********************************************/
01F2 ; unsigned char Read_RAM(unsigned char AddrH,unsigned char AddrL,unsigned char Data_Num,unsigned char *p_Data)
01F2 ; {
01F2 .dbline 242
01F2 ; unsigned char statuevalue,i;
01F2 ; AddrH|=0X80; //访问RAM位置1
01F2 4068 ori R20,128
01F4 .dbline 243
01F4 ; AddrL<<=6;
01F4 660F lsl R22
01F6 660F lsl R22
01F8 660F lsl R22
01FA 660F lsl R22
01FC 660F lsl R22
01FE 660F lsl R22
0200 .dbline 244
0200 ; AddrL|=0X20; //读写操作位置1,表示读操作
0200 6062 ori R22,32
0202 .dbline 246
0202 ;
0202 ; enable_spi(); //使能SPI口
0202 0E940000 xcall _enable_spi
0206 .dbline 247
0206 ; statuevalue=SpiWrite(AddrH);
0206 042F mov R16,R20
0208 0E940000 xcall _SpiWrite
020C 402F mov R20,R16
020E .dbline 248
020E ; SpiWrite(AddrL);
020E 062F mov R16,R22
0210 0E940000 xcall _SpiWrite
0214 .dbline 250
0214 ;
0214 ; for (i=0;i<Data_Num;i++)
0214 6627 clr R22
0216 09C0 xjmp L29
0218 L26:
0218 .dbline 251
0218 .dbline 252
0218 0FEF ldi R16,255
021A 0E940000 xcall _SpiWrite
021E E62F mov R30,R22
0220 FF27 clr R31
0222 EA0D add R30,R10
0224 FB1D adc R31,R11
0226 0083 std z+0,R16
0228 .dbline 253
0228 L27:
0228 .dbline 250
0228 6395 inc R22
022A L29:
022A .dbline 250
022A 6C15 cp R22,R12
022C A8F3 brlo L26
022E .dbline 255
022E ; {
022E ; *(p_Data+i)=SpiWrite(0xff);
022E ; }
022E ;
022E ; disable_spi(); //禁止SPI口
022E 0E940000 xcall _disable_spi
0232 .dbline 256
0232 ; return statuevalue;
0232 042F mov R16,R20
0234 .dbline -2
0234 L25:
0234 0E940000 xcall pop_gset4
0238 .dbline 0 ; func end
0238 0895 ret
023A .dbsym r statuevalue 20 c
023A .dbsym r i 22 c
023A .dbsym r p_Data 10 pc
023A .dbsym r Data_Num 12 c
023A .dbsym r AddrL 22 c
023A .dbsym r AddrH 20 c
023A .dbend
023A .dbfunc e Read_RAM_Byte _Read_RAM_Byte fc
023A ; readvalue -> R20
023A ; AddrL -> R20
023A ; AddrH -> R22
.even
023A _Read_RAM_Byte::
023A 0E940000 xcall push_gset2
023E 422F mov R20,R18
0240 602F mov R22,R16
0242 .dbline -1
0242 .dbline 267
0242 ; }
0242 ;
0242 ; /*******************************************
0242 ; *函数功能:读一字节RAM
0242 ; *输入参数:AddrH:在选定的RAM存储块中确定RAM地址
0242 ; AddrL:选择RAM存储块
0242 ; *输出参数:无
0242 ; *返 回 值:读取的数据值
0242 ; ********************************************/
0242 ; unsigned char Read_RAM_Byte(unsigned char AddrH,unsigned char AddrL)
0242 ; {
0242 .dbline 269
0242 ; unsigned char readvalue;
0242 ; AddrH|=0X80; //访问RAM位置1
0242 6068 ori R22,128
0244 .dbline 270
0244 ; AddrL<<=6;
0244 440F lsl R20
0246 440F lsl R20
0248 440F lsl R20
024A 440F lsl R20
024C 440F lsl R20
024E 440F lsl R20
0250 .dbline 271
0250 ; AddrL|=0X20; //读写操作位置1,表示读操作
0250 4062 ori R20,32
0252 .dbline 273
0252 ;
0252 ; enable_spi(); //使能SPI口
0252 0E940000 xcall _enable_spi
0256 .dbline 274
0256 ; SpiWrite(AddrH);
0256 062F mov R16,R22
0258 0E940000 xcall _SpiWrite
025C .dbline 275
025C ; SpiWrite(AddrL);
025C 042F mov R16,R20
025E 0E940000 xcall _SpiWrite
0262 .dbline 277
0262 ;
0262 ; readvalue=SpiWrite(0xff);
0262 0FEF ldi R16,255
0264 0E940000 xcall _SpiWrite
0268 402F mov R20,R16
026A .dbline 279
026A ;
026A ; disable_spi(); //禁止SPI口
026A 0E940000 xcall _disable_spi
026E .dbline 280
026E ; return readvalue;
026E 042F mov R16,R20
0270 .dbline -2
0270 L30:
0270 0E940000 xcall pop_gset2
0274 .dbline 0 ; func end
0274 0895 ret
0276 .dbsym r readvalue 20 c
0276 .dbsym r AddrL 20 c
0276 .dbsym r AddrH 22 c
0276 .dbend
0276 .dbfunc e PowerOff _PowerOff fV
.even
0276 _PowerOff::
0276 .dbline -1
0276 .dbline 290
0276 ; }
0276 ;
0276 ; /*******************************************
0276 ; *函数功能:关闭电压校准器模式
0276 ; *输入参数:无
0276 ; *输出参数:无
0276 ; *返 回 值:无
0276 ; ********************************************/
0276 ; void PowerOff(void)
0276 ; {
0276 .dbline 291
0276 ; PORTE &=~(1<<VREGEN); //禁止电压校准器
0276 1B98 cbi 0x3,3
0278 .dbline -2
0278 L31:
0278 .dbline 0 ; func end
0278 0895 ret
027A .dbend
027A .dbfunc e PwOff_PwDown _PwOff_PwDown fV
.even
027A _PwOff_PwDown::
027A 2197 sbiw R28,1
027C .dbline -1
027C .dbline 301
027C ; }
027C ;
027C ; /*******************************************
027C ; *函数功能:从电压校准器关闭模式转换到掉电模式
027C ; *输入参数:无
027C ; *输出参数:无
027C ; *返 回 值:无
027C ; ********************************************/
027C ; void PwOff_PwDown(void)
027C ; {
027C .dbline 302
027C ; PORTE |=1<<VREGEN; //启动电压校准器
027C 1B9A sbi 0x3,3
027E .dbline 303
027E ; Delay600us();
027E 0E940000 xcall _Delay600us
0282 .dbline 305
0282 ;
0282 ; enable_spi(); //使能SPI口
0282 0E940000 xcall _enable_spi
0286 .dbline 306
0286 ; Write_ConfigureWord(MAIN,0x78,0x00); //先将reset位设置为低
0286 2224 clr R2
0288 2882 std y+0,R2
028A 28E7 ldi R18,120
028C 00E1 ldi R16,16
028E CFDE xcall _Write_ConfigureWord
0290 .dbline 307
0290 ; Write_ConfigureWord(MAIN,0xf8,0x00); //先将reset位设置为高,完成复位过程
0290 2224 clr R2
0292 2882 std y+0,R2
0294 28EF ldi R18,248
0296 00E1 ldi R16,16
0298 CADE xcall _Write_ConfigureWord
029A .dbline 308
029A ; disable_spi(); //禁止SPI口
029A 0E940000 xcall _disable_spi
029E .dbline -2
029E L32:
029E 2196 adiw R28,1
02A0 .dbline 0 ; func end
02A0 0895 ret
02A2 .dbend
02A2 .dbfunc e AllStates_PwDown _AllStates_PwDown fV
.even
02A2 _AllStates_PwDown::
02A2 .dbline -1
02A2 .dbline 319
02A2 ;
02A2 ; }
02A2 ;
02A2 ; /*******************************************
02A2 ; *函数功能:其他任何模式转换到掉电模式
02A2 ; *输入参数:无
02A2 ; *输出参数:无
02A2 ; *返 回 值:无
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -