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

📄 send.lst

📁 使用MEGA8控制RF01芯片,用射频915MHz发送四路AD采样的信号
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0148)  _CLI();//关全局中断
_TIM0_init:
      B2 94F8      BCLR	7
(0149)  TCCR0=0x00;
      B3 2422      CLR	R2
      B4 BE23      OUT	0x33,R2
(0150)  TCNT0=0xE0; //4us定时
      B5 EE80      LDI	R24,0xE0
      B6 BF82      OUT	0x32,R24
(0151)  TCCR0|=0x01;//开定时器,无预分频
      B7 B783      IN	R24,0x33
      B8 6081      ORI	R24,1
      B9 BF83      OUT	0x33,R24
(0152)  TIMSK|=0x01;//T0中断
      BA B789      IN	R24,0x39
      BB 6081      ORI	R24,1
      BC BF89      OUT	0x39,R24
(0153)  SREG|=0x80;//开全局中断
      BD 9478      BSET	7
      BE 9508      RET
_TIM0_ovf:
      BF 920A      ST	R0,-Y
      C0 921A      ST	R1,-Y
      C1 922A      ST	R2,-Y
      C2 923A      ST	R3,-Y
      C3 924A      ST	R4,-Y
      C4 925A      ST	R5,-Y
      C5 926A      ST	R6,-Y
      C6 927A      ST	R7,-Y
      C7 928A      ST	R8,-Y
      C8 929A      ST	R9,-Y
      C9 930A      ST	R16,-Y
      CA 931A      ST	R17,-Y
      CB 932A      ST	R18,-Y
      CC 933A      ST	R19,-Y
      CD 938A      ST	R24,-Y
      CE 939A      ST	R25,-Y
      CF 93AA      ST	R26,-Y
      D0 93BA      ST	R27,-Y
      D1 93EA      ST	R30,-Y
      D2 93FA      ST	R31,-Y
      D3 B60F      IN	R0,0x3F
      D4 920A      ST	R0,-Y
(0154) }
(0155) 
(0156) /*T020ms中断程序*/
(0157) void TIM0_ovf(void)
(0158) {
(0159)  TCCR0=0x00;//关定时器
      D5 2422      CLR	R2
      D6 BE23      OUT	0x33,R2
(0160)  TCNT0=0xE0;
      D7 EE80      LDI	R24,0xE0
      D8 BF82      OUT	0x32,R24
(0161)  if(++n==5000)
      D9 9180 0060 LDS	R24,n
      DB 9190 0061 LDS	R25,n+1
      DD 9601      ADIW	R24,1
      DE 011C      MOVW	R2,R24
      DF 9230 0061 STS	n+1,R3
      E1 9220 0060 STS	n,R2
      E3 3888      CPI	R24,0x88
      E4 E1E3      LDI	R30,0x13
      E5 079E      CPC	R25,R30
      E6 F009      BEQ	0x00E8
      E7 C031      RJMP	0x0119
(0162)    {
(0163)     n=0;
      E8 2422      CLR	R2
      E9 2433      CLR	R3
      EA 9230 0061 STS	n+1,R3
      EC 9220 0060 STS	n,R2
(0164)     RFXX_WRT_CMD(0xC039);//启动发射
      EE E309      LDI	R16,0x39
      EF EC10      LDI	R17,0xC0
      F0 DF8F      RCALL	_RFXX_WRT_CMD
(0165)     
(0166)     RF02_SEND(0xAA);//PREAMBLE
      F1 EA0A      LDI	R16,0xAA
      F2 DFA9      RCALL	_RF02_SEND
(0167)     RF02_SEND(0xAA);//PREAMBLE
      F3 EA0A      LDI	R16,0xAA
      F4 DFA7      RCALL	_RF02_SEND
(0168)     RF02_SEND(0xAA);//PREAMBLE
      F5 EA0A      LDI	R16,0xAA
      F6 DFA5      RCALL	_RF02_SEND
(0169)     RF02_SEND(0x2D);//SYNC HI BYTE
      F7 E20D      LDI	R16,0x2D
      F8 DFA3      RCALL	_RF02_SEND
(0170)     RF02_SEND(0xD4);//SYNC LOW BYTE
      F9 ED04      LDI	R16,0xD4
      FA DFA1      RCALL	_RF02_SEND
(0171) 	
(0172)     RF02_SEND(ch0);//DATA BYTE 0
      FB 9100 0066 LDS	R16,ch0
      FD DF9E      RCALL	_RF02_SEND
(0173)     RF02_SEND(ch1);//DATA BYTE 1
      FE 9100 0065 LDS	R16,ch1
     100 DF9B      RCALL	_RF02_SEND
(0174)     RF02_SEND(ch2);//DATA BYTE 2
     101 9100 0064 LDS	R16,ch2
     103 DF98      RCALL	_RF02_SEND
(0175)     RF02_SEND(ch3);//DATA BYTE 3
     104 9100 0063 LDS	R16,ch3
     106 DF95      RCALL	_RF02_SEND
(0176)     
(0177)     RF02_SEND(0xAA);//Dummpy byte
     107 EA0A      LDI	R16,0xAA
     108 DF93      RCALL	_RF02_SEND
(0178)     
(0179)     RFXX_WRT_CMD(0xC001);
     109 E001      LDI	R16,1
     10A EC10      LDI	R17,0xC0
     10B DF74      RCALL	_RFXX_WRT_CMD
(0180) 	
(0181) 	Transmit(ch0);
     10C 9100 0066 LDS	R16,ch0
     10E DF9F      RCALL	_Transmit
(0182) 	Transmit(ch1);
     10F 9100 0065 LDS	R16,ch1
     111 DF9C      RCALL	_Transmit
(0183) 	Transmit(ch2);
     112 9100 0064 LDS	R16,ch2
     114 DF99      RCALL	_Transmit
(0184) 	Transmit(ch3);
     115 9100 0063 LDS	R16,ch3
     117 DF96      RCALL	_Transmit
(0185)     
(0186)     start_AD();
     118 DF31      RCALL	_start_AD
(0187)    }
(0188)  TCCR0|=0x01;//开定时器
     119 B783      IN	R24,0x33
     11A 6081      ORI	R24,1
     11B BF83      OUT	0x33,R24
     11C 9009      LD	R0,Y+
     11D BE0F      OUT	0x3F,R0
     11E 91F9      LD	R31,Y+
     11F 91E9      LD	R30,Y+
     120 91B9      LD	R27,Y+
     121 91A9      LD	R26,Y+
     122 9199      LD	R25,Y+
     123 9189      LD	R24,Y+
     124 9139      LD	R19,Y+
     125 9129      LD	R18,Y+
     126 9119      LD	R17,Y+
     127 9109      LD	R16,Y+
     128 9099      LD	R9,Y+
     129 9089      LD	R8,Y+
     12A 9079      LD	R7,Y+
     12B 9069      LD	R6,Y+
     12C 9059      LD	R5,Y+
     12D 9049      LD	R4,Y+
     12E 9039      LD	R3,Y+
     12F 9029      LD	R2,Y+
     130 9019      LD	R1,Y+
     131 9009      LD	R0,Y+
     132 9518      RETI
(0189) }
(0190)  
(0191) /*USART初始化*/
(0192) void uart_init(void)
(0193) {
(0194)  UCSRA=0x00;
_uart_init:
     133 2422      CLR	R2
     134 B82B      OUT	0x0B,R2
(0195)  UCSRB=(1<<RXEN)|(1<<TXEN);  // 允许发送和接收
     135 E188      LDI	R24,0x18
     136 B98A      OUT	0x0A,R24
(0196)  UCSRC=(1<<URSEL)|0x06;      // 8bit,1stop
     137 E886      LDI	R24,0x86
     138 BD80      OUT	0x20,R24
(0197)  UBRRL=(fosc/baud/16-1)%256; // 设置波特率寄存器低位字节
     139 E189      LDI	R24,0x19
     13A B989      OUT	0x09,R24
(0198)  UBRRH=(fosc/baud/16-1)/256; // 设置波特率寄存器高位字节
     13B BC20      OUT	0x20,R2
     13C 9508      RET
(0199) }
(0200) 
(0201) /*AD变换初始化*/
(0202) void adc_init(void)           
(0203) { 
(0204)   DDRC=0x00;//PORTC INPUT
_adc_init:
     13D 2422      CLR	R2
     13E BA24      OUT	0x14,R2
(0205)   adc_mux=0;
     13F 9220 0062 STS	adc_mux,R2
(0206)   ADCSRA=0x00;      //关ad
     141 B826      OUT	0x06,R2
(0207)   ACSR = (1<<ACD);  //关模拟比较器
     142 E880      LDI	R24,0x80
     143 B988      OUT	0x08,R24
(0208)   ADCSRA|=0x06;    //预分频1
     144 B186      IN	R24,0x06
     145 6086      ORI	R24,6
     146 B986      OUT	0x06,R24
(0209)   
(0210)   ADMUX = (1<<REFS0)|(1<<ADLAR)|(adc_mux&0x0f);   //取VCC为参考值,AD0模拟变量输入 
     147 2D82      MOV	R24,R2
     148 708F      ANDI	R24,0xF
     149 6680      ORI	R24,0x60
     14A B987      OUT	0x07,R24
(0211)   ADCSRA|=0xC0;           //AD转换启动
     14B B186      IN	R24,0x06
     14C 6C80      ORI	R24,0xC0
     14D B986      OUT	0x06,R24
(0212)   ch0=get_ad();
     14E DEF6      RCALL	_get_ad
     14F 9300 0066 STS	ch0,R16
     151 9508      RET
(0213) }
(0214) 
(0215) /*系统初始化*/
(0216) void init_main(void)
(0217) {
(0218)  uart_init();
_init_main:
     152 DFE0      RCALL	_uart_init
(0219)  adc_init();
     153 DFE9      RCALL	_adc_init
(0220)  start_AD();
     154 DEF5      RCALL	_start_AD
(0221)   
(0222)  MCUCR=0x00;
     155 2422      CLR	R2
     156 BE25      OUT	0x35,R2
(0223)  GICR=0x00;
     157 BE2B      OUT	0x3B,R2
     158 9508      RET
(0224) }
(0225) 
(0226) /*发射芯片端口初始化*/
(0227) void RFXX_PORT_INIT(void)
(0228) {
(0229)   HI_SEL();
_RFXX_PORT_INIT:
     159 9AC2      SBI	0x18,2
(0230)   HI_SDI();
     15A 9AC3      SBI	0x18,3
(0231)   LOW_SCK();
     15B 98C5      CBI	0x18,5
(0232)   SEL_OUTPUT();
     15C 9ABA      SBI	0x17,2
(0233)   SDI_OUTPUT();
     15D 9ABB      SBI	0x17,3
(0234)   SDO_INPUT();
     15E 98BC      CBI	0x17,4
(0235)   SCK_OUTPUT();
     15F 9ABD      SBI	0x17,5
     160 9508      RET
(0236) }
(0237) 
(0238) /*主程序*/
(0239) void main(void)
(0240) {
(0241)   init_main();
_main:
     161 DFF0      RCALL	_init_main
(0242)   RFXX_PORT_INIT();
     162 DFF6      RCALL	_RFXX_PORT_INIT
(0243)   
(0244)   RFXX_WRT_CMD(0xCC00); //执行状态寄存器命令
     163 E000      LDI	R16,0
     164 EC1C      LDI	R17,0xCC
     165 DF1A      RCALL	_RFXX_WRT_CMD
(0245)   RFXX_WRT_CMD(0x9B61); //915频段
     166 E601      LDI	R16,0x61
     167 E91B      LDI	R17,0x9B
     168 DF17      RCALL	_RFXX_WRT_CMD
(0246)   RFXX_WRT_CMD(0xA7D0); //A640=434MHz
     169 ED00      LDI	R16,0xD0
     16A EA17      LDI	R17,0xA7
     16B DF14      RCALL	_RFXX_WRT_CMD
(0247)   RFXX_WRT_CMD(0xD040); //RATE/2
     16C E400      LDI	R16,0x40
     16D ED10      LDI	R17,0xD0
     16E DF11      RCALL	_RFXX_WRT_CMD
(0248)   RFXX_WRT_CMD(0xC823); //9.6kbps 23
     16F E203      LDI	R16,0x23
     170 EC18      LDI	R17,0xC8
     171 DF0E      RCALL	_RFXX_WRT_CMD
(0249)   RFXX_WRT_CMD(0xC220); //使用位同步时钟
     172 E200      LDI	R16,0x20
     173 EC12      LDI	R17,0xC2
     174 DF0B      RCALL	_RFXX_WRT_CMD
(0250)   RFXX_WRT_CMD(0xC001); //初始化完毕,关闭所有功能模块
     175 E001      LDI	R16,1
     176 EC10      LDI	R17,0xC0
     177 DF08      RCALL	_RFXX_WRT_CMD
(0251)   PORTB|=(1<<RFXX_DATA);
     178 9AC1      SBI	0x18,1
(0252)   DDRB|=(1<<RFXX_DATA);//将PB1置为输出
     179 9AB9      SBI	0x17,1
(0253)   
(0254)   TIM0_init();
     17A DF37      RCALL	_TIM0_init
(0255)   
(0256)   while(1);
FILE: <library>
     17B CFFF      RJMP	0x017B
     17C 9508      RET
push_xgsetF000:
     17D 937A      ST	R23,-Y
     17E 936A      ST	R22,-Y
     17F 935A      ST	R21,-Y
     180 934A      ST	R20,-Y
     181 9508      RET
pop_xgsetF000:
     182 9149      LD	R20,Y+
     183 9159      LD	R21,Y+
     184 9169      LD	R22,Y+
     185 9179      LD	R23,Y+
     186 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -