📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile H:\work\myWork\AVR-CC1100/protocol.h
0000 .dbfunc e setPktType _setPktType fc
0000 ; regVal -> R20
0000 ; pktType -> R22
.even
0000 _setPktType::
0000 00D0 rcall push_gset2
0002 602F mov R22,R16
0004 .dbline -1
0004 .dbline 27
0004 ; /*******************************************************************************************************
0004 ; * Compiler: WINAVR
0004 ; * Target platform: Atmega88 and Chipcon CC1100
0004 ; * Author: 陈思
0004 ; *******************************************************************************************************
0004 ; * 2007-12-26 13:19:41
0004 ; ******************************************************************************************************/
0004 ;
0004 ; #include "protocol.h"
0004 ;
0004 ; #define FOSC 1000000
0004 ; #define BAUDRATE 4800
0004 ; #define BAUDREG FOSC/16/BAUDRATE-1
0004 ; #define MAXSIZE 255
0004 ;
0004 ; //#pragma interrupt_handler USART_INT:iv_USART0_RX
0004 ; //#pragma interrupt_handler REC_PKT:iv_INT0
0004 ;
0004 ; // 表示串口状态的全局变量
0004 ; USART_FLAG fUART;
0004 ; ChipState fCC1100;
0004 ; BYTE RecData[MAXSIZE];
0004 ; BYTE RecLen = 0;
0004 ;
0004 ; // USART 接收到一个字节完成中断
0004 ; void USART_INT(void)
0004 ;
0004 .dbline 30
0004 ;
0004 ; {
0004 ; BYTE recByte;
0004 08E0 ldi R16,8
0006 00D0 rcall _spiReadReg
0008 402F mov R20,R16
000A .dbline 32
000A ; USART_RECINT_DISABLE();
000A ;
000A 6623 tst R22
000C 19F4 brne L2
000E .dbline 33
000E ; recByte = UDR0;
000E .dbline 34
000E ;
000E 4360 ori R20,3
0010 .dbline 35
0010 ; if(recByte == 0xAA)
0010 4C7F andi R20,252
0012 .dbline 36
0012 ; {
0012 07C0 rjmp L3
0014 L2:
0014 .dbline 38
0014 ; if(fUART == USART_IDLE)
0014 ; fUART = USART_RECIEVE;
0014 6130 cpi R22,1
0016 19F4 brne L4
0018 .dbline 39
0018 ; }
0018 .dbline 40
0018 ; else if(recByte == 0x55)
0018 4360 ori R20,3
001A .dbline 41
001A ; {
001A 4D7F andi R20,253
001C .dbline 42
001C ; if(fUART == USART_RECIEVE)
001C 02C0 rjmp L5
001E L4:
001E .dbline 45
001E ; fUART = USART_RECIEVE_FINISH;
001E ; }
001E ; else
001E 0027 clr R16
0020 04C0 rjmp L1
0022 L5:
0022 L3:
0022 .dbline 47
0022 ; {
0022 ; if(fUART == USART_RECIEVE)
0022 242F mov R18,R20
0024 08E0 ldi R16,8
0026 00D0 rcall _spiWriteReg
0028 .dbline 50
0028 ; {
0028 ; RecData[RecLen+1] = recByte;
0028 ; RecLen ++;
0028 01E0 ldi R16,1
002A .dbline -2
002A L1:
002A 00D0 rcall pop_gset2
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r regVal 20 c
002E .dbsym r pktType 22 c
002E .dbend
002E .dbfunc e setPktLen _setPktLen fc
002E ; pktLength -> R20
.even
002E _setPktLen::
002E 00D0 rcall push_gset1
0030 402F mov R20,R16
0032 .dbline -1
0032 .dbline 56
0032 ; }
0032 ; }
0032 ;
0032 ; USART_RECINT_ENABLE();
0032 ; }
0032 ;
0032 .dbline 58
0032 ; // 检测到数据包的到来,用INT0通知MCU
0032 ; void REC_PKT(void)
0032 81E0 ldi R24,1
0034 8417 cp R24,R20
0036 38F4 brsh L7
0038 8FEF ldi R24,255
003A 8417 cp R24,R20
003C 20F0 brlo L7
003E .dbline 59
003E ; {
003E 242F mov R18,R20
0040 06E0 ldi R16,6
0042 00D0 rcall _spiWriteReg
0044 02C0 rjmp L8
0046 L7:
0046 .dbline 62
0046 ; INT0_DISABLE(); // 关中断
0046 ;
0046 ; // if(fCC1100 == SLEEP)
0046 0027 clr R16
0048 01C0 rjmp L6
004A L8:
004A .dbline 65
004A ; spiReceivePacket(RecData,MAXSIZE);
004A ;
004A ; EIFR |= (1<<INTF0); // 清中断标志位,并开中断
004A 01E0 ldi R16,1
004C .dbline -2
004C L6:
004C 00D0 rcall pop_gset1
004E .dbline 0 ; func end
004E 0895 ret
0050 .dbsym r pktLength 20 c
0050 .dbend
0050 .dbfunc e setSendType _setSendType fc
0050 ; regVal -> R20
0050 ; sendType -> R22
.even
0050 _setSendType::
0050 00D0 rcall push_gset2
0052 602F mov R22,R16
0054 .dbline -1
0054 .dbline 70
0054 ; INT0_ENABLE();
0054 ; }
0054 ;
0054 ; void main()
0054 ; {
0054 .dbline 73
0054 ; // 系统初始化部分
0054 ; CLI();
0054 ; WDTCSR = 0x00;
0054 07E0 ldi R16,7
0056 00D0 rcall _spiReadReg
0058 402F mov R20,R16
005A .dbline 75
005A ; fUART = USART_IDLE;
005A ;
005A 6623 tst R22
005C 19F4 brne L10
005E .dbline 76
005E ; SpiInit();
005E .dbline 77
005E ; cc1100Init();
005E 4360 ori R20,3
0060 .dbline 78
0060 ; //GDO2Int();
0060 4C7F andi R20,252
0062 .dbline 79
0062 ; //GDO2_INT0();
0062 0CC0 rjmp L11
0064 L10:
0064 .dbline 81
0064 ; //serialInit(12);
0064 ; NOP();
0064 6130 cpi R22,1
0066 19F4 brne L12
0068 .dbline 82
0068 ; SEI();
0068 .dbline 83
0068 ;
0068 4360 ori R20,3
006A .dbline 84
006A ; memset(RecData,0,MAXSIZE);
006A 4D7F andi R20,253
006C .dbline 85
006C ;
006C 07C0 rjmp L13
006E L12:
006E .dbline 87
006E ; setPktType(DEFINED_LENGTH);
006E ; setAddress(0x00);
006E 6230 cpi R22,2
0070 19F4 brne L14
0072 .dbline 88
0072 ; setPktLen(0xFF);
0072 .dbline 89
0072 ; setSendType(NO_ADDRESS);
0072 4360 ori R20,3
0074 .dbline 90
0074 ;
0074 4E7F andi R20,254
0076 .dbline 91
0076 ; spiWriteReg(CC1100_IOCFG0,0x06);
0076 02C0 rjmp L15
0078 L14:
0078 .dbline 95
0078 ;
0078 ; //initWorMode();
0078 ;
0078 ; /*
0078 0027 clr R16
007A 04C0 rjmp L9
007C L15:
007C L13:
007C L11:
007C .dbline 97
007C ; while(1)
007C ; {
007C 242F mov R18,R20
007E 07E0 ldi R16,7
0080 00D0 rcall _spiWriteReg
0082 .dbline 99
0082 ; if(fUART == USART_RECIEVE_FINISH)
0082 ; {
0082 01E0 ldi R16,1
0084 .dbline -2
0084 L9:
0084 00D0 rcall pop_gset2
0086 .dbline 0 ; func end
0086 0895 ret
0088 .dbsym r regVal 20 c
0088 .dbsym r sendType 22 c
0088 .dbend
0088 .dbfunc e setAddress _setAddress fc
0088 ; addr -> R20
.even
0088 _setAddress::
0088 00D0 rcall push_gset1
008A 402F mov R20,R16
008C .dbline -1
008C .dbline 104
008C ; CLI();
008C ; RecData[0] = RecLen;
008C ; spiSendPacket(RecData,RecLen+1);
008C ; fUART = USART_IDLE;
008C ;
008C .dbline 106
008C ; memset(RecData,0,RecLen+1);
008C ; RecLen = 0;
008C 4030 cpi R20,0
008E 38F0 brlo L17
0090 8FEF ldi R24,255
0092 8417 cp R24,R20
0094 20F0 brlo L17
0096 .dbline 107
0096 ;
0096 242F mov R18,R20
0098 09E0 ldi R16,9
009A 00D0 rcall _spiWriteReg
009C 02C0 rjmp L18
009E L17:
009E .dbline 111
009E ; SEI();
009E ; }
009E ; }
009E ;
009E 0027 clr R16
00A0 01C0 rjmp L16
00A2 L18:
00A2 .dbline 113
00A2 ; */
00A2 ; while(1)
00A2 01E0 ldi R16,1
00A4 .dbline -2
00A4 L16:
00A4 00D0 rcall pop_gset1
00A6 .dbline 0 ; func end
00A6 0895 ret
00A8 .dbsym r addr 20 c
00A8 .dbend
00A8 .dbfunc e GDO2Int _GDO2Int fV
.even
00A8 _GDO2Int::
00A8 .dbline -1
00A8 .dbline 119
00A8 ; {
00A8 ; if(spiReceivePacket(RecData,MAXSIZE))
00A8 ; break;
00A8 ; }
00A8 ;
00A8 ;
00A8 .dbline 120
00A8 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -