intmcu.lis

来自「工业开关量检测模块的原代码,带断线检测功能」· LIS 代码 · 共 862 行 · 第 1/3 页

LIS
862
字号
 0302           ;   data_tranfer();                                        //刷新DI_data_cur[]的值
 0302 01D0              xcall _data_tranfer
 0304                   .dbline -2
 0304           L2:
 0304                   .dbline 0 ; func end
 0304 0895              ret
 0306                   .dbend
 0306                   .dbfunc e data_tranfer _data_tranfer fV
 0306           ;              j -> R20
 0306           ;              i -> R22
                        .even
 0306           _data_tranfer::
 0306 0E940000          xcall push_gset2
 030A                   .dbline -1
 030A                   .dbline 172
 030A           ; 
 030A           ; }
 030A           ; 
 030A           ; 
 030A           ; void data_tranfer(void)
 030A           ; {
 030A                   .dbline 175
 030A           ;   unsigned char i,j;
 030A           ;   
 030A           ;   for(j=0;j<3;j++)
 030A 4427              clr R20
 030C 68C0              xjmp L87
 030E           L84:
 030E                   .dbline 176
 030E           ;   {
 030E                   .dbline 177
 030E           ;     for(i=0;i<8;i=i+2)
 030E 6627              clr R22
 0310 62C0              xjmp L91
 0312           L88:
 0312                   .dbline 178
 0312           ;        { 
 0312                   .dbline 179
 0312           ;          if(((DI_Status[j]>>i) & 0x03) == 0x03)
 0312 80E0              ldi R24,<_DI_Status
 0314 90E0              ldi R25,>_DI_Status
 0316 E42F              mov R30,R20
 0318 FF27              clr R31
 031A E80F              add R30,R24
 031C F91F              adc R31,R25
 031E 0081              ldd R16,z+0
 0320 162F              mov R17,R22
 0322 0E940000          xcall lsr8
 0326 802F              mov R24,R16
 0328 8370              andi R24,3
 032A 8330              cpi R24,3
 032C 99F4              brne L92
 032E                   .dbline 180
 032E           ;            DI_data_cur[(j<<2)+(i>>1)] =  0x5a;
 032E 262E              mov R2,R22
 0330 3324              clr R3
 0332 3594              asr R3
 0334 2794              ror R2
 0336 E42F              mov R30,R20
 0338 FF27              clr R31
 033A EE0F              lsl R30
 033C FF1F              rol R31
 033E EE0F              lsl R30
 0340 FF1F              rol R31
 0342 E20D              add R30,R2
 0344 F31D              adc R31,R3
 0346 80E0              ldi R24,<_DI_data_cur
 0348 90E0              ldi R25,>_DI_data_cur
 034A E80F              add R30,R24
 034C F91F              adc R31,R25
 034E 8AE5              ldi R24,90
 0350 8083              std z+0,R24
 0352 40C0              xjmp L93
 0354           L92:
 0354                   .dbline 181
 0354           ;          else if(((DI_Status[j]>>i) & 0x03) == 0x00)      
 0354 80E0              ldi R24,<_DI_Status
 0356 90E0              ldi R25,>_DI_Status
 0358 E42F              mov R30,R20
 035A FF27              clr R31
 035C E80F              add R30,R24
 035E F91F              adc R31,R25
 0360 0081              ldd R16,z+0
 0362 162F              mov R17,R22
 0364 0E940000          xcall lsr8
 0368 802F              mov R24,R16
 036A 8370              andi R24,3
 036C 99F4              brne L94
 036E                   .dbline 182
 036E           ;              DI_data_cur[(j<<2)+(i>>1)] =  0;
 036E 262E              mov R2,R22
 0370 3324              clr R3
 0372 3594              asr R3
 0374 2794              ror R2
 0376 E42F              mov R30,R20
 0378 FF27              clr R31
 037A EE0F              lsl R30
 037C FF1F              rol R31
 037E EE0F              lsl R30
 0380 FF1F              rol R31
 0382 E20D              add R30,R2
 0384 F31D              adc R31,R3
 0386 80E0              ldi R24,<_DI_data_cur
 0388 90E0              ldi R25,>_DI_data_cur
 038A E80F              add R30,R24
 038C F91F              adc R31,R25
 038E 2224              clr R2
 0390 2082              std z+0,R2
 0392 20C0              xjmp L95
 0394           L94:
 0394                   .dbline 183
 0394           ;          else if(((DI_Status[j]>>i) & 0x03) == 0x02)
 0394 80E0              ldi R24,<_DI_Status
 0396 90E0              ldi R25,>_DI_Status
 0398 E42F              mov R30,R20
 039A FF27              clr R31
 039C E80F              add R30,R24
 039E F91F              adc R31,R25
 03A0 0081              ldd R16,z+0
 03A2 162F              mov R17,R22
 03A4 0E940000          xcall lsr8
 03A8 802F              mov R24,R16
 03AA 8370              andi R24,3
 03AC 8230              cpi R24,2
 03AE 91F4              brne L96
 03B0                   .dbline 184
 03B0           ;              DI_data_cur[(j<<2)+(i>>1)] =  0xa5;
 03B0 262E              mov R2,R22
 03B2 3324              clr R3
 03B4 3594              asr R3
 03B6 2794              ror R2
 03B8 E42F              mov R30,R20
 03BA FF27              clr R31
 03BC EE0F              lsl R30
 03BE FF1F              rol R31
 03C0 EE0F              lsl R30
 03C2 FF1F              rol R31
 03C4 E20D              add R30,R2
 03C6 F31D              adc R31,R3
 03C8 80E0              ldi R24,<_DI_data_cur
 03CA 90E0              ldi R25,>_DI_data_cur
 03CC E80F              add R30,R24
 03CE F91F              adc R31,R25
 03D0 85EA              ldi R24,165
 03D2 8083              std z+0,R24
 03D4           L96:
 03D4           L95:
 03D4           L93:
 03D4                   .dbline 185
 03D4           L89:
 03D4                   .dbline 177
 03D4 6E5F              subi R22,254    ; addi 2
 03D6           L91:
 03D6                   .dbline 177
 03D6 6830              cpi R22,8
 03D8 08F4              brsh X0
 03DA 9BCF              xjmp L88
 03DC           X0:
 03DC                   .dbline 186
 03DC           L85:
 03DC                   .dbline 175
 03DC 4395              inc R20
 03DE           L87:
 03DE                   .dbline 175
 03DE 4330              cpi R20,3
 03E0 08F4              brsh X1
 03E2 95CF              xjmp L84
 03E4           X1:
 03E4                   .dbline -2
 03E4           L83:
 03E4 0E940000          xcall pop_gset2
 03E8                   .dbline 0 ; func end
 03E8 0895              ret
 03EA                   .dbsym r j 20 c
 03EA                   .dbsym r i 22 c
 03EA                   .dbend
 03EA                   .dbfunc e timer0_init _timer0_init fV
                        .even
 03EA           _timer0_init::
 03EA                   .dbline -1
 03EA                   .dbline 193
 03EA           ;      }
 03EA           ;   }
 03EA           ; 
 03EA           ; }
 03EA           ; 
 03EA           ; 
 03EA           ; 
 03EA           ; void timer0_init(void)
 03EA           ; {
 03EA                   .dbline 194
 03EA           ;  TCCR0A = 0x00; //stop
 03EA 2224              clr R2
 03EC 24BC              out 0x24,R2
 03EE                   .dbline 195
 03EE           ;  ASSR  = 0x00; //set async mode
 03EE 2092B600          sts 182,R2
 03F2                   .dbline 196
 03F2           ;  TCNT0 = 0x83; //set count
 03F2 83E8              ldi R24,131
 03F4 86BD              out 0x26,R24
 03F6                   .dbline 197
 03F6           ;  OCR0  = 0x7D;
 03F6 8DE7              ldi R24,125
 03F8 87BD              out 0x27,R24
 03FA                   .dbline 198
 03FA           ;  TCCR0A = 0x05; //start timer
 03FA 85E0              ldi R24,5
 03FC 84BD              out 0x24,R24
 03FE                   .dbline -2
 03FE           L98:
 03FE                   .dbline 0 ; func end
 03FE 0895              ret
 0400                   .dbend
 0400                   .dbfunc e init_devices _init_devices fV
                        .even
 0400           _init_devices::
 0400                   .dbline -1
 0400                   .dbline 202
 0400           ; }
 0400           ; 
 0400           ; void init_devices(void)
 0400           ; {
 0400                   .dbline 203
 0400           ;  port_init();
 0400 FFDD              xcall _port_init
 0402                   .dbline 204
 0402           ;  timer0_init(); 
 0402 F3DF              xcall _timer0_init
 0404                   .dbline 205
 0404           ;  TIMSK0 = 0x01; 
 0404 81E0              ldi R24,1
 0406 80936E00          sts 110,R24
 040A                   .dbline -2
 040A           L99:
 040A                   .dbline 0 ; func end
 040A 0895              ret
 040C                   .dbend
 040C                   .dbfunc e watchdog_init _watchdog_init fV
                        .even
 040C           _watchdog_init::
 040C                   .dbline -1
 040C                   .dbline 209
 040C           ; }
 040C           ; 
 040C           ; void watchdog_init(void)
 040C           ; {
 040C                   .dbline 210
 040C           ;  WDR(); //this prevents a timout on enabling
 040C A895              wdr
 040E                   .dbline 211
 040E           ;  WDTCR = 0x0e; //WATCHDOG ENABLED - dont forget to issue WDRs
 040E 8EE0              ldi R24,14
 0410 80936000          sts 96,R24
 0414                   .dbline -2
 0414           L100:
 0414                   .dbline 0 ; func end
 0414 0895              ret
 0416                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\开关量CAN网\intmcu.c
 0000           _DI_data_pre::
 0000                   .blkb 12
 000C                   .dbsym e DI_data_pre _DI_data_pre A[12:12]c
 000C           _DI_data::
 000C                   .blkb 12
 0018                   .dbsym e DI_data _DI_data A[12:12]c
 0018           _DI_data_cur::
 0018                   .blkb 12
 0024                   .dbsym e DI_data_cur _DI_data_cur A[12:12]c
 0024           _PINF_temp::
 0024                   .blkb 1
 0025                   .dbsym e PINF_temp _PINF_temp c
 0025           _PINE_temp::
 0025                   .blkb 1
 0026                   .dbsym e PINE_temp _PINE_temp c
 0026           _PINB_temp::
 0026                   .blkb 1
 0027                   .dbsym e PINB_temp _PINB_temp c
 0027           _PINA_temp::
 0027                   .blkb 1
 0028                   .dbsym e PINA_temp _PINA_temp c
 0028           _DI_Status::
 0028                   .blkb 3
 002B                   .dbsym e DI_Status _DI_Status A[3:3]c

⌨️ 快捷键说明

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