⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 主要是通过AMEGAL88 来控制cc1100
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -