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

📄 m16_t0_counter.lis

📁 我最近使用的一些程序代码
💻 LIS
字号:
                        .module M16_T0_Counter.c
                        .area data(ram, con, rel)
 0000           _Table::
 0000                   .blkb 2
                        .area idata
 0000 C0F9              .byte 192,249
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 A4B0              .byte 164,176
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 9992              .byte 153,146
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 82F8              .byte 130,248
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 8090              .byte 128,144
                        .area data(ram, con, rel)
 000A                   .dbfile F:\myavr\temp\M16_T0_Counter\M16_T0_Counter.c
 000A                   .dbsym e Table _Table A[10:10]c
 000A           _Data::
 000A                   .blkb 2
                        .area idata
 000A 0000              .word 0
                        .area data(ram, con, rel)
 000C                   .dbfile F:\myavr\temp\M16_T0_Counter\M16_T0_Counter.c
 000C                   .blkb 2
                        .area idata
 000C 0000              .word 0
                        .area data(ram, con, rel)
 000E                   .dbfile F:\myavr\temp\M16_T0_Counter\M16_T0_Counter.c
 000E                   .blkb 2
                        .area idata
 000E 0000              .word 0
                        .area data(ram, con, rel)
 0010                   .dbfile F:\myavr\temp\M16_T0_Counter\M16_T0_Counter.c
 0010                   .blkb 2
                        .area idata
 0010 0000              .word 0
                        .area data(ram, con, rel)
 0012                   .dbfile F:\myavr\temp\M16_T0_Counter\M16_T0_Counter.c
 0012                   .dbsym e Data _Data A[8:4]i
 0012           _CNT::
 0012                   .blkb 2
                        .area idata
 0012 0000              .word 0
                        .area data(ram, con, rel)
 0014                   .dbfile F:\myavr\temp\M16_T0_Counter\M16_T0_Counter.c
 0014                   .dbsym e CNT _CNT i
                        .area text(rom, con, rel)
 0000                   .dbfile F:\myavr\temp\M16_T0_Counter\M16_T0_Counter.c
 0000                   .dbfunc e DelayMs _DelayMs fV
 0000           ;              j -> R20
 0000           ;              i -> R16
                        .even
 0000           _DelayMs::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 11
 0004           ; #include <iom16v.h>
 0004           ; #define uchar unsigned char
 0004           ; #define uint unsigned int
 0004           ; 
 0004           ; //segment code 0123456789
 0004           ; uchar Table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
 0004           ; uint Data[4]={0,0,0,0};
 0004           ; uint CNT=0;
 0004           ; 
 0004           ; void DelayMs(uchar i)
 0004           ; {
 0004                   .dbline 13
 0004           ;  uchar j;
 0004           ;  for(;i>0;i--)
 0004 06C0              xjmp L5
 0006           L2:
 0006                   .dbline 14
 0006           ;  {
 0006                   .dbline 15
 0006 4427              clr R20
 0008 01C0              xjmp L9
 000A           L6:
 000A                   .dbline 15
 000A           L7:
 000A                   .dbline 15
 000A 4395              inc R20
 000C           L9:
 000C                   .dbline 15
 000C 4A3F              cpi R20,250
 000E E8F3              brlo L6
 0010                   .dbline 16
 0010           L3:
 0010                   .dbline 13
 0010 0A95              dec R16
 0012           L5:
 0012                   .dbline 13
 0012 2224              clr R2
 0014 2016              cp R2,R16
 0016 B8F3              brlo L2
 0018                   .dbline -2
 0018                   .dbline 17
 0018           ;   for(j=0;j<250;j++);
 0018           ;  }
 0018           ; }
 0018           L1:
 0018 0E940000          xcall pop_gset1
 001C                   .dbline 0 ; func end
 001C 0895              ret
 001E                   .dbsym r j 20 c
 001E                   .dbsym r i 16 c
 001E                   .dbend
 001E                   .dbfunc e Display _Display fV
 001E           ;            sel -> R20
 001E           ;              i -> R22
 001E           ;              p -> R10,R11
                        .even
 001E           _Display::
 001E 0E940000          xcall push_gset3
 0022 5801              movw R10,R16
 0024                   .dbline -1
 0024                   .dbline 20
 0024           ; 
 0024           ; void Display(uint *p)
 0024           ; {
 0024                   .dbline 21
 0024           ;  uchar i,sel=0x01;
 0024 41E0              ldi R20,1
 0026                   .dbline 22
 0026           ;  for(i=0;i<4;i++)
 0026 6627              clr R22
 0028 13C0              xjmp L14
 002A           L11:
 002A                   .dbline 23
 002A                   .dbline 24
 002A 45BB              out 0x15,R20
 002C                   .dbline 25
 002C 82E0              ldi R24,2
 002E 869F              mul R24,R22
 0030 F001              movw R30,R0
 0032 EA0D              add R30,R10
 0034 FB1D              adc R31,R11
 0036 2080              ldd R2,z+0
 0038 3180              ldd R3,z+1
 003A 80E0              ldi R24,<_Table
 003C 90E0              ldi R25,>_Table
 003E F101              movw R30,R2
 0040 E80F              add R30,R24
 0042 F91F              adc R31,R25
 0044 2080              ldd R2,z+0
 0046 2BBA              out 0x1b,R2
 0048                   .dbline 26
 0048 02E0              ldi R16,2
 004A DADF              xcall _DelayMs
 004C                   .dbline 27
 004C 440F              lsl R20
 004E                   .dbline 28
 004E           L12:
 004E                   .dbline 22
 004E 6395              inc R22
 0050           L14:
 0050                   .dbline 22
 0050 6430              cpi R22,4
 0052 58F3              brlo L11
 0054                   .dbline -2
 0054                   .dbline 29
 0054           ;  {
 0054           ;   PORTC=sel;
 0054           ;   PORTA=Table[p[i]];
 0054           ;   DelayMs(2);
 0054           ;   sel=sel<<1;
 0054           ;  }
 0054           ; }
 0054           L10:
 0054 0E940000          xcall pop_gset3
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbsym r sel 20 c
 005A                   .dbsym r i 22 c
 005A                   .dbsym r p 10 pi
 005A                   .dbend
 005A                   .dbfunc e Process _Process fV
 005A           ;              p -> R22,R23
 005A           ;              i -> R20,R21
                        .even
 005A           _Process::
 005A 0E940000          xcall push_gset2
 005E B901              movw R22,R18
 0060 A801              movw R20,R16
 0062                   .dbline -1
 0062                   .dbline 32
 0062           ; 
 0062           ; void Process(uint i,uint *p)//由于T0是8位定时/计数器,最大计数值为255
 0062           ; {                           // 所以下面的p[0]用不着
 0062                   .dbline 33
 0062           ;  p[0]=i/1000;
 0062 28EE              ldi R18,1000
 0064 33E0              ldi R19,3
 0066 8A01              movw R16,R20
 0068 0E940000          xcall div16u
 006C FB01              movw R30,R22
 006E 1183              std z+1,R17
 0070 0083              std z+0,R16
 0072                   .dbline 34
 0072           ;  i=i%1000;
 0072                   .dbline 35
 0072           ;  p[1]=i/100;
 0072 28EE              ldi R18,1000
 0074 33E0              ldi R19,3
 0076 8A01              movw R16,R20
 0078 0E940000          xcall mod16u
 007C A801              movw R20,R16
 007E 24E6              ldi R18,100
 0080 30E0              ldi R19,0
 0082 0E940000          xcall div16u
 0086 FB01              movw R30,R22
 0088 1383              std z+3,R17
 008A 0283              std z+2,R16
 008C                   .dbline 36
 008C           ;  i=i%100;
 008C                   .dbline 37
 008C           ;  p[2]=i/10;
 008C 24E6              ldi R18,100
 008E 30E0              ldi R19,0
 0090 8A01              movw R16,R20
 0092 0E940000          xcall mod16u
 0096 A801              movw R20,R16
 0098 2AE0              ldi R18,10
 009A 30E0              ldi R19,0
 009C 0E940000          xcall div16u
 00A0 FB01              movw R30,R22
 00A2 1583              std z+5,R17
 00A4 0483              std z+4,R16
 00A6                   .dbline 38
 00A6           ;  i=i%10;
 00A6                   .dbline 39
 00A6           ;  p[3]=i;
 00A6 2AE0              ldi R18,10
 00A8 30E0              ldi R19,0
 00AA 8A01              movw R16,R20
 00AC 0E940000          xcall mod16u
 00B0 A801              movw R20,R16
 00B2 FB01              movw R30,R22
 00B4 5783              std z+7,R21
 00B6 4683              std z+6,R20
 00B8                   .dbline -2
 00B8                   .dbline 40
 00B8           ; }
 00B8           L15:
 00B8 0E940000          xcall pop_gset2
 00BC                   .dbline 0 ; func end
 00BC 0895              ret
 00BE                   .dbsym r p 22 pi
 00BE                   .dbsym r i 20 i
 00BE                   .dbend
 00BE                   .dbfunc e Init_IO _Init_IO fV
                        .even
 00BE           _Init_IO::
 00BE                   .dbline -1
 00BE                   .dbline 43
 00BE           ; 
 00BE           ; void Init_IO(void)
 00BE           ; {
 00BE                   .dbline 44
 00BE           ;  DDRA=0xff;
 00BE 8FEF              ldi R24,255
 00C0 8ABB              out 0x1a,R24
 00C2                   .dbline 45
 00C2           ;  PORTA=0xff;
 00C2 8BBB              out 0x1b,R24
 00C4                   .dbline 46
 00C4           ;  DDRC=0xff;
 00C4 84BB              out 0x14,R24
 00C6                   .dbline 47
 00C6           ;  PORTC=0xff;
 00C6 85BB              out 0x15,R24
 00C8                   .dbline 48
 00C8           ;  DDRB=0x00;
 00C8 2224              clr R2
 00CA 27BA              out 0x17,R2
 00CC                   .dbline 49
 00CC           ;  PORTB=0x00;
 00CC 28BA              out 0x18,R2
 00CE                   .dbline -2
 00CE                   .dbline 50
 00CE           ; }
 00CE           L16:
 00CE                   .dbline 0 ; func end
 00CE 0895              ret
 00D0                   .dbend
 00D0                   .dbfunc e main _main fV
 00D0           ;           load -> R20,R21
                        .even
 00D0           _main::
 00D0                   .dbline -1
 00D0                   .dbline 53
 00D0           ; 
 00D0           ; void main(void)
 00D0           ; {
 00D0                   .dbline 55
 00D0           ;  uint load;
 00D0           ;  Init_IO();
 00D0 F6DF              xcall _Init_IO
 00D2                   .dbline 56
 00D2           ;  TCCR0=0x06;//T0工作在计数方式,T0是8位,所以最大计数值为255;
 00D2 86E0              ldi R24,6
 00D4 83BF              out 0x33,R24
 00D6 09C0              xjmp L19
 00D8           L18:
 00D8                   .dbline 61
 00D8                   .dbline 62
 00D8                   .dbline 64
 00D8 42B7              in R20,0x32
 00DA 5527              clr R21
 00DC 20E0              ldi R18,<_Data
 00DE 30E0              ldi R19,>_Data
 00E0 8A01              movw R16,R20
 00E2 BBDF              xcall _Process
 00E4                   .dbline 65
 00E4 00E0              ldi R16,<_Data
 00E6 10E0              ldi R17,>_Data
 00E8 9ADF              xcall _Display
 00EA                   .dbline 66
 00EA           L19:
 00EA                   .dbline 60
 00EA F6CF              xjmp L18
 00EC           X0:
 00EC                   .dbline -2
 00EC                   .dbline 67
 00EC           ;  //TCCR1B=0x07;//T1工作在计数方式,T1是16位,所以最大计数值为65535;
 00EC           ;  //TCNT1H=CNT;
 00EC           ;  //TCNT1L=CNT;
 00EC           ;  while(1)
 00EC           ;  {
 00EC           ;   load=TCNT0;//T0工作在8位计数方式
 00EC           ;   //load=(TCNT1H<<8)+TCNT1L;//T1工作在16位计数方式
 00EC           ;   Process(load,Data);
 00EC           ;   Display(Data);
 00EC           ;  }
 00EC           ; }
 00EC           L17:
 00EC                   .dbline 0 ; func end
 00EC 0895              ret
 00EE                   .dbsym r load 20 i
 00EE                   .dbend

⌨️ 快捷键说明

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