📄 send.lst
字号:
(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 + -