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

📄 main.lis

📁 LED显示面板
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -