📄 main.lis
字号:
0190 ; channel=0;
0190 2224 clr R2
0192 20922600 sts _channel,R2
0196 L52:
0196 .dbline 100
0196 ; }
0196 L49:
0196 .dbline 101
0196 L45:
0196 .dbline -2
0196 L2:
0196 0E940000 xcall pop_lset
019A .dbline 0 ; func end
019A 1895 reti
019C .dbend
019C .dbfunc e main _main fV
019C ; tempp -> y+2
019C ; i -> R10
.even
019C _main::
019C 2697 sbiw R28,6
019E .dbline -1
019E .dbline 108
019E ; }
019E ;
019E ; }
019E ;
019E ;
019E ;
019E ; void main(void)
019E ; {
019E .dbline 112
019E ; unsigned char i;
019E ; long tempp;
019E ;
019E ; CLI();
019E F894 cli
01A0 .dbline 113
01A0 ; init_devices();
01A0 0E940000 xcall _init_devices
01A4 .dbline 114
01A4 ; hardware_reset();
01A4 0E940000 xcall _hardware_reset
01A8 .dbline 115
01A8 ; id_int();
01A8 0E940000 xcall _id_int
01AC .dbline 116
01AC ; shd_led_init();
01AC 0E940000 xcall _shd_led_init
01B0 .dbline 118
01B0 ;
01B0 ; watchdog_init();
01B0 0E940000 xcall _watchdog_init
01B4 .dbline 119
01B4 ; WDR();
01B4 A895 wdr
01B6 .dbline 120
01B6 ; WDR();
01B6 A895 wdr
01B8 .dbline 122
01B8 ;
01B8 ; mode_flag=off;
01B8 85EA ldi R24,165
01BA 80930700 sts _mode_flag,R24
01BE .dbline 123
01BE ; alarm_process_flag=off;
01BE 80932300 sts _alarm_process_flag,R24
01C2 .dbline 124
01C2 ; soundoff_flag=off;
01C2 80930200 sts _soundoff_flag,R24
01C6 .dbline 125
01C6 ; ack_flag=off;
01C6 80930100 sts _ack_flag,R24
01CA .dbline 126
01CA ; alarm_flag=off;
01CA 80930000 sts _alarm_flag,R24
01CE .dbline 128
01CE ;
01CE ; ID_nu = get_id(); //读取拨码开关的值
01CE 0E940000 xcall _get_id
01D2 00932A00 sts _ID_nu,R16
01D6 .dbline 129
01D6 ; ID_net = ID_nu; //计算网络ID号
01D6 202E mov R2,R16
01D8 20922900 sts _ID_net,R2
01DC .dbline 130
01DC ; Pass_Flag = 0x01;
01DC 81E0 ldi R24,1
01DE 80932000 sts _Pass_Flag,R24
01E2 .dbline 131
01E2 ; tempp = ID_net;
01E2 3324 clr R3
01E4 4424 clr R4
01E6 5524 clr R5
01E8 2A82 std y+2,R2
01EA 3B82 std y+3,R3
01EC 4C82 std y+4,R4
01EE 5D82 std y+5,R5
01F0 .dbline 132
01F0 ; Pass_Flag <<= 1;
01F0 282E mov R2,R24
01F2 220C lsl R2
01F4 20922000 sts _Pass_Flag,R2
01F8 .dbline 133
01F8 ; id4 = BASE_ADDR+tempp;
01F8 40E0 ldi R20,0
01FA 58E2 ldi R21,40
01FC 68E2 ldi R22,40
01FE 70E0 ldi R23,0
0200 2A80 ldd R2,y+2
0202 3B80 ldd R3,y+3
0204 4C80 ldd R4,y+4
0206 5D80 ldd R5,y+5
0208 240E add R2,R20
020A 351E adc R3,R21
020C 461E adc R4,R22
020E 571E adc R5,R23
0210 30921100 sts _id4+1,R3
0214 20921000 sts _id4,R2
0218 50921300 sts _id4+2+1,R5
021C 40921200 sts _id4+2,R4
0220 .dbline 134
0220 ; id5 = BASE_ADDR+tempp+0x01000000;
0220 40E0 ldi R20,0
0222 58E2 ldi R21,40
0224 68E2 ldi R22,40
0226 71E0 ldi R23,1
0228 2A80 ldd R2,y+2
022A 3B80 ldd R3,y+3
022C 4C80 ldd R4,y+4
022E 5D80 ldd R5,y+5
0230 240E add R2,R20
0232 351E adc R3,R21
0234 461E adc R4,R22
0236 571E adc R5,R23
0238 30920D00 sts _id5+1,R3
023C 20920C00 sts _id5,R2
0240 50920F00 sts _id5+2+1,R5
0244 40920E00 sts _id5+2,R4
0248 .dbline 135
0248 ; id6 = BASE_ADDR+tempp+0x02000000; //发送ID地址
0248 40E0 ldi R20,0
024A 58E2 ldi R21,40
024C 68E2 ldi R22,40
024E 72E0 ldi R23,2
0250 2A80 ldd R2,y+2
0252 3B80 ldd R3,y+3
0254 4C80 ldd R4,y+4
0256 5D80 ldd R5,y+5
0258 240E add R2,R20
025A 351E adc R3,R21
025C 461E adc R4,R22
025E 571E adc R5,R23
0260 30920900 sts _id6+1,R3
0264 20920800 sts _id6,R2
0268 50920B00 sts _id6+2+1,R5
026C 40920A00 sts _id6+2,R4
0270 .dbline 136
0270 ; id1 = 0x02280000;
0270 40E0 ldi R20,0
0272 50E0 ldi R21,0
0274 68E2 ldi R22,40
0276 72E0 ldi R23,2
0278 50931D00 sts _id1+1,R21
027C 40931C00 sts _id1,R20
0280 70931F00 sts _id1+2+1,R23
0284 60931E00 sts _id1+2,R22
0288 .dbline 137
0288 ; Pass_Flag <<= 1;
0288 20902000 lds R2,_Pass_Flag
028C 220C lsl R2
028E 20922000 sts _Pass_Flag,R2
0292 .dbline 138
0292 ; id2 = 0x02280001;
0292 41E0 ldi R20,1
0294 50E0 ldi R21,0
0296 68E2 ldi R22,40
0298 72E0 ldi R23,2
029A 50931900 sts _id2+1,R21
029E 40931800 sts _id2,R20
02A2 70931B00 sts _id2+2+1,R23
02A6 60931A00 sts _id2+2,R22
02AA .dbline 139
02AA ; id3 = 0x02280002; //接收ID地址
02AA 42E0 ldi R20,2
02AC 50E0 ldi R21,0
02AE 68E2 ldi R22,40
02B0 72E0 ldi R23,2
02B2 50931500 sts _id3+1,R21
02B6 40931400 sts _id3,R20
02BA 70931700 sts _id3+2+1,R23
02BE 60931600 sts _id3+2,R22
02C2 .dbline 140
02C2 ; Pass_Flag <<= 1;
02C2 220C lsl R2
02C4 20922000 sts _Pass_Flag,R2
02C8 .dbline 141
02C8 ; WDR();
02C8 A895 wdr
02CA .dbline 142
02CA ; CANMOBID[0] = id1;
02CA 40901E00 lds R4,_id1+2
02CE 50901F00 lds R5,_id1+2+1
02D2 20901C00 lds R2,_id1
02D6 30901D00 lds R3,_id1+1
02DA 30920100 sts _CANMOBID+1,R3
02DE 20920000 sts _CANMOBID,R2
02E2 50920300 sts _CANMOBID+2+1,R5
02E6 40920200 sts _CANMOBID+2,R4
02EA .dbline 143
02EA ; CANMOBID[1] = id2;
02EA 40901A00 lds R4,_id2+2
02EE 50901B00 lds R5,_id2+2+1
02F2 20901800 lds R2,_id2
02F6 30901900 lds R3,_id2+1
02FA 30920500 sts _CANMOBID+4+1,R3
02FE 20920400 sts _CANMOBID+4,R2
0302 50920700 sts _CANMOBID+4+2+1,R5
0306 40920600 sts _CANMOBID+4+2,R4
030A .dbline 144
030A ; CANMOBID[2] = id3;
030A 1A01 movw R2,R20
030C 2B01 movw R4,R22
030E 30920900 sts _CANMOBID+8+1,R3
0312 20920800 sts _CANMOBID+8,R2
0316 50920B00 sts _CANMOBID+8+2+1,R5
031A 40920A00 sts _CANMOBID+8+2,R4
031E .dbline 145
031E ; CANMOBID[3] = id4;
031E 40901200 lds R4,_id4+2
0322 50901300 lds R5,_id4+2+1
0326 20901000 lds R2,_id4
032A 30901100 lds R3,_id4+1
032E 30920D00 sts _CANMOBID+12+1,R3
0332 20920C00 sts _CANMOBID+12,R2
0336 50920F00 sts _CANMOBID+12+2+1,R5
033A 40920E00 sts _CANMOBID+12+2,R4
033E .dbline 146
033E ; CANMOBID[4] = id5;
033E 40900E00 lds R4,_id5+2
0342 50900F00 lds R5,_id5+2+1
0346 20900C00 lds R2,_id5
034A 30900D00 lds R3,_id5+1
034E 30921100 sts _CANMOBID+16+1,R3
0352 20921000 sts _CANMOBID+16,R2
0356 50921300 sts _CANMOBID+16+2+1,R5
035A 40921200 sts _CANMOBID+16+2,R4
035E .dbline 147
035E ; CANMOBID[5] = id6;
035E 40900A00 lds R4,_id6+2
0362 50900B00 lds R5,_id6+2+1
0366 20900800 lds R2,_id6
036A 30900900 lds R3,_id6+1
036E 30921500 sts _CANMOBID+20+1,R3
0372 20921400 sts _CANMOBID+20,R2
0376 50921700 sts _CANMOBID+20+2+1,R5
037A 40921600 sts _CANMOBID+20+2,R4
037E .dbline 148
037E ; if(Pass_Flag!=0x08)
037E 80912000 lds R24,_Pass_Flag
0382 8830 cpi R24,8
0384 11F0 breq L59
0386 .dbline 149
0386 ; RESET;
0386 0C940000 jmp 0x000
038A L59:
038A .dbline 150
038A ; WDR();
038A A895 wdr
038C .dbline 151
038C ; can_init ();
038C 0E940000 xcall _can_init
0390 .dbline 152
0390 ; WDR();
0390 A895 wdr
0392 .dbline 153
0392 ; XMCRA = 0x80;
0392 80E8 ldi R24,128
0394 E4E7 ldi R30,116
0396 F0E0 ldi R31,0
0398 8083 std z+0,R24
039A .dbline 154
039A ; XMCRB = 0x04;
039A 84E0 ldi R24,4
039C E5E7 ldi R30,117
039E 8083 std z+0,R24
03A0 .dbline 156
03A0 ;
03A0 ; SEI();
03A0 7894 sei
03A2 B6C0 xjmp L62
03A4 L61:
03A4 .dbline 158
03A4 ; while(1)
03A4 ; {
03A4 .dbline 159
03A4 ; WDR();
03A4 A895 wdr
03A6 .dbline 160
03A6 ; rece_led_off; //关闭接收指示灯
03A6 8898 cbi 0x11,0
03A8 .dbline 161
03A8 ; send_led_off; //关闭发送指示灯
03A8 8998 cbi 0x11,1
03AA .dbline 163
03AA ;
03AA ; ID_nu = get_id(); //读取拨码开关的值
03AA 0E940000 xcall _get_id
03AE 00932A00 sts _ID_nu,R16
03B2 .dbline 165
03B2 ;
03B2 ; if(ID_net!=ID_nu) //拨码有改变则复位
03B2 30902900 lds R3,_ID_net
03B6 3016 cp R3,R16
03B8 11F0 breq L64
03BA .dbline 166
03BA ; RESET;
03BA 0C940000 jmp 0x000
03BE L64:
03BE .dbline 168
03BE ;
03BE ; key_process(); //键盘处理
03BE 0E940000 xcall _key_process
03C2 .dbline 169
03C2 ; channel_process(); //通道切换并处理
03C2 0E940000 xcall _channel_process
03C6 .dbline 170
03C6 ; WDR();
03C6 A895 wdr
03C8 .dbline 171
03C8 ; led_display(); //灯板显示
03C8 0E940000 xcall _led_display
03CC .dbline 172
03CC ; WDR();
03CC A895 wdr
03CE .dbline 173
03CE ; turn_display(channel,1,pannel_led[channel].displaydata); //7段码显示
03CE 20902600 lds R2,_channel
03D2 84E1 ldi R24,20
03D4 829D mul R24,R2
03D6 F001 movw R30,R0
03D8 80E0 ldi R24,<_pannel_led+18
03DA 90E0 ldi R25,>_pannel_led+18
03DC E80F add R30,R24
03DE F91F adc R31,R25
03E0 2080 ldd R2,z+0
03E2 3180 ldd R3,z+1
03E4 3982 std y+1,R3
03E6 2882 std y+0,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -