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

📄 timer2.lis

📁 使用Atmel88芯片实现RS485通讯,Modbus通讯协议.在IVR_AVR环境中编译,文件完整.
💻 LIS
字号:
                        .module timer2.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\ICCTES~1\1128\timer2.c
 0000                   .dbfunc e timer2_init _timer2_init fV
                        .even
 0000           _timer2_init::
 0000                   .dbline -1
 0000                   .dbline 17
 0000           ; // timer2
 0000           ; #include <iom48v.h>
 0000           ; #include <macros.h>
 0000           ; #include "main.h"
 0000           ; #include "modbus.h"
 0000           ; #include "timer2.h"
 0000           ; 
 0000           ; volatile TIMEBASESTRCUT timeBase;
 0000           ; volatile LEDCONTROL ledControl;
 0000           ; //uchar var_a,var_b; 
 0000           ; 
 0000           ; //TIMER2 initialize - prescale:64
 0000           ; // WGM: Normal
 0000           ; // desired value: 1mSec
 0000           ; // actual value:  1.000mSec (0.0%)
 0000           ; void timer2_init(void)
 0000           ; {
 0000                   .dbline 18
 0000           ;  TCCR2B = 0x00; //stop
 0000 2224              clr R2
 0002 2092B100          sts 177,R2
 0006                   .dbline 19
 0006           ;  ASSR  = 0x00; //set async mode
 0006 2092B600          sts 182,R2
 000A                   .dbline 20
 000A           ;  TCNT2 = 0x83; //setup
 000A 83E8              ldi R24,131
 000C 8093B200          sts 178,R24
 0010                   .dbline 21
 0010           ;  OCR2A = 0x7D;
 0010 8DE7              ldi R24,125
 0012 8093B300          sts 179,R24
 0016                   .dbline 22
 0016           ;  OCR2B = 0x00;
 0016 2092B400          sts 180,R2
 001A                   .dbline 23
 001A           ;  TCCR2A = 0x00; 
 001A 2092B000          sts 176,R2
 001E                   .dbline 24
 001E           ;  TCCR2B = 0x04; //start
 001E 84E0              ldi R24,4
 0020 8093B100          sts 177,R24
 0024                   .dbline -2
 0024           L5:
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\ICCTES~1\1128\timer2.c
 0000           L7:
 0000                   .blkb 1
 0001           L8:
 0001                   .blkb 1
 0002           L9:
 0002                   .blkb 2
                        .area text(rom, con, rel)
 0026                   .dbfile D:\ICCTES~1\1128\timer2.c
 0026                   .dbfunc e time_mission _time_mission fV
 0026                   .dbsym s cnt500ms L9 i
 0026                   .dbsym s varcou L8 c
 0026                   .dbsym s Cnt100ms L7 c
                        .even
 0026           _time_mission::
 0026                   .dbline -1
 0026                   .dbline 29
 0026           ; }
 0026           ; 
 0026           ; // timebase module.
 0026           ; void time_mission (void)       
 0026           ; {
 0026                   .dbline 33
 0026           ;       static uchar Cnt100ms;
 0026           ;       static uchar varcou;
 0026           ;       static uint cnt500ms;
 0026           ;       timeBase.bits.b1ms = 0;
 0026 80910600          lds R24,_timeBase
 002A 8E7F              andi R24,254
 002C 80930600          sts _timeBase,R24
 0030                   .dbline 34
 0030           ;       timeBase.bits.b10ms = 0;
 0030 80910600          lds R24,_timeBase
 0034 8B7F              andi R24,251
 0036 80930600          sts _timeBase,R24
 003A                   .dbline 36
 003A           ;     
 003A           ;       if(timeBase.bits.bt1ms) 
 003A 80910600          lds R24,_timeBase
 003E 8695              lsr R24
 0040 8170              andi R24,1
 0042 09F4              brne X0
 0044 44C0              rjmp L10
 0046           X0:
 0046                   .dbline 37
 0046           ;       { 
 0046                   .dbline 42
 0046           ;       //--------------------
 0046           ;       //    PORTC ^= 0x02;
 0046           ;       //      subled();       
 0046           ;       //-----------------------
 0046           ;               timeBase.bits.bt1ms = 0; 
 0046 80910600          lds R24,_timeBase
 004A 8D7F              andi R24,253
 004C 80930600          sts _timeBase,R24
 0050                   .dbline 43
 0050           ;               timeBase.bits.b1ms = 1; 
 0050 80910600          lds R24,_timeBase
 0054 8160              ori R24,1
 0056 80930600          sts _timeBase,R24
 005A                   .dbline 44
 005A           ;               if(receTimeOut>0) 
 005A 2224              clr R2
 005C 30900000          lds R3,_receTimeOut
 0060 2314              cp R2,R3
 0062 70F4              brsh L12
 0064                   .dbline 45
 0064           ;               {
 0064                   .dbline 46
 0064           ;                       receTimeOut--;
 0064 832D              mov R24,R3
 0066 8150              subi R24,1
 0068 80930000          sts _receTimeOut,R24
 006C                   .dbline 47
 006C           ;                       if(receTimeOut==0 && receCount>0)
 006C 8823              tst R24
 006E 41F4              brne L14
 0070 30900000          lds R3,_receCount
 0074 2314              cp R2,R3
 0076 20F4              brsh L14
 0078                   .dbline 48
 0078           ;                       {
 0078                   .dbline 49
 0078           ;                               receCount = 0;
 0078 20920000          sts _receCount,R2
 007C                   .dbline 50
 007C           ;                               checkoutError = 0;
 007C 20920000          sts _checkoutError,R2
 0080                   .dbline 51
 0080           ;                       } 
 0080           L14:
 0080                   .dbline 52
 0080           ;               } //if(receTimeOut>0) 
 0080           L12:
 0080                   .dbline 54
 0080           ;               
 0080           ;               varcou++;
 0080 80910100          lds R24,L8
 0084 8F5F              subi R24,255    ; addi 1
 0086 80930100          sts L8,R24
 008A                   .dbline 55
 008A           ;               if(varcou>=5)
 008A 8530              cpi R24,5
 008C 40F0              brlo L16
 008E                   .dbline 56
 008E           ;       {                                              
 008E                   .dbline 58
 008E           ;             
 008E           ;                       ledControl.bits.refurbish = 1;  
 008E 80910400          lds R24,_ledControl
 0092 8260              ori R24,2
 0094 80930400          sts _ledControl,R24
 0098                   .dbline 59
 0098           ;               varcou = 0;                     
 0098 2224              clr R2
 009A 20920100          sts L8,R2
 009E                   .dbline 60
 009E           ;       }                                   
 009E           L16:
 009E                   .dbline 62
 009E           ;       
 009E           ;           cnt500ms++;
 009E 80910200          lds R24,L9
 00A2 90910300          lds R25,L9+1
 00A6 0196              adiw R24,1
 00A8 90930300          sts L9+1,R25
 00AC 80930200          sts L9,R24
 00B0                   .dbline 63
 00B0           ;           if(cnt500ms>=200)
 00B0 883C              cpi R24,200
 00B2 E0E0              ldi R30,0
 00B4 9E07              cpc R25,R30
 00B6 58F0              brlo L18
 00B8                   .dbline 64
 00B8           ;           {    
 00B8                   .dbline 65
 00B8           ;                   cnt500ms = 0;
 00B8 2224              clr R2
 00BA 3324              clr R3
 00BC 30920300          sts L9+1,R3
 00C0 20920200          sts L9,R2
 00C4                   .dbline 66
 00C4           ;                   ledControl.bits.once128ms = 1;
 00C4 80910400          lds R24,_ledControl
 00C8 8160              ori R24,1
 00CA 80930400          sts _ledControl,R24
 00CE                   .dbline 67
 00CE           ;           }
 00CE           L18:
 00CE                   .dbline 68
 00CE           L10:
 00CE                   .dbline -2
 00CE           L6:
 00CE                   .dbline 0 ; func end
 00CE 0895              ret
 00D0                   .dbend
                        .area bss(ram, con, rel)
 0004                   .dbfile D:\ICCTES~1\1128\timer2.c
 0004           _ledControl::
 0004                   .blkb 2
 0006                   .dbstruct 0 1 .4
 0006                   .dbfield 0 once128ms F[0:1]
 0006                   .dbfield 0 refurbish F[1:1]
 0006                   .dbend
 0006                   .dbunion 0 2 .3
 0006                   .dbfield 0 bits S[.4]
 0006                   .dbfield 0 allbits i
 0006                   .dbend
 0006                   .dbsym e ledControl _ledControl S[.3]
 0006           _timeBase::
 0006                   .blkb 2
 0008                   .dbstruct 0 1 .2
 0008                   .dbfield 0 b1ms F[0:1]
 0008                   .dbfield 0 bt1ms F[1:1]
 0008                   .dbfield 0 b10ms F[2:1]
 0008                   .dbfield 0 bt10ms F[3:1]
 0008                   .dbend
 0008                   .dbunion 0 2 .1
 0008                   .dbfield 0 bits S[.2]
 0008                   .dbfield 0 allbits i
 0008                   .dbend
 0008                   .dbsym e timeBase _timeBase S[.1]

⌨️ 快捷键说明

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