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

📄 cymometer.lst

📁 AVR单片机例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
                         .module cymometer.c
                         .area vector(rom, abs)
                         .org 14
 0007  C0CB              rjmp _timer0
                         .org 6
 0003  C10C              rjmp _timer1
                         .area code(ram, con, rel)
                         .area lit(rom, con, rel)
 000D                  _tabel::
 000D  063F              .byte 63,6
 000E  4F5B              .byte 91,'O
 000F  6D66              .byte 'f,'m
 0010  077D              .byte 125,7
 0011  6F7F              .byte 127,'o
 0012  7C77              .byte 'w,124
 0013  5E39              .byte 57,94
 0014  7179              .byte 'y,'q
 0015                    .dbfile D:\ICC-AVR\examples.sl\cymometer\cymometer.c
 0015                    .dbsym s tabel _tabel Ac[16:16]
                         .area data(ram, con, rel)
--- 0000                   .dbfile D:\ICC-AVR\examples.sl\cymometer\cymometer.c
 0030                  _ledbuff::
 0030                    .blkb 2
                         .area idata
--- 0000 3F3F              .byte 63,63
                         .area data(ram, con, rel)
--- 0001                   .dbfile D:\ICC-AVR\examples.sl\cymometer\cymometer.c
--- 0001                   .blkb 2
                         .area idata
--- 0001 3F3F              .byte 63,63
                         .area data(ram, con, rel)
--- 0002                   .dbfile D:\ICC-AVR\examples.sl\cymometer\cymometer.c
--- 0002                   .blkb 2
                         .area idata
--- 0002 3F3F              .byte 63,63
                         .area data(ram, con, rel)
--- 0003                   .dbfile D:\ICC-AVR\examples.sl\cymometer\cymometer.c
--- 0003                   .dbsym s ledbuff _ledbuff Ac[6:6]
                         .area text(rom, con, rel)
--- 0000                   .dbfile D:\ICC-AVR\examples.sl\cymometer\cymometer.c
--- 0000                   .dbfunc s port_init _port_init fI
                         .even
 0040                  _port_init::
 0040                    .dbline 28{
                       ; /**********************************************
                       ;              http://www.sl.com.cn
                       ;       双龙电子公司----频率计演示程序(ICCAVR)
                       ;                  作者:詹卫前
                       ;           1、学习定时器T1捕捉(捕获)中断的使用
                       ;           2、学习频率计的设计方法
                       ;           3、通过对timecount的修改,可实现多量程
                       ;              频率计编程。
                       ; **********************************************/
                       ; #include <io8515.h>
                       ; #include <macros.h>
                       ; #pragma interrupt_handler timer0:8
                       ; #pragma interrupt_handler timer1:4
                       ; extern void delay_ms(unsigned int n);//引用外部函数
                       ; extern void delay_1ms(void); 
                       ; #pragma data:code
                       ;           /*   七段译码字形表     */        
                       ; const unsigned char tabel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
                       ; #pragma data:data
                       ;           /*     显示缓冲区       */
                       ; unsigned char ledbuff[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};
                       ; unsigned long count;//频率测量计数变量
                       ; unsigned int timecount;//频率测量闸门控制变量
                       ; /******************************
                       ;            初始化
                       ; ******************************/
                       ; void port_init(void)
                       ;  {
 0040                    .dbline 29
                       ;   MCUCR=0x00;
 0040  2422              clr R2
 0041  BE25              out 0x35,R2
 0042                    .dbline 30
                       ;   DDRD=0x3f;
 0042  E38F              ldi R24,63
 0043  BB81              out 0x11,R24
 0044                    .dbline 31
                       ;   DDRB=0xff;
 0044  EF8F              ldi R24,255
 0045  BB87              out 0x17,R24
 0046                    .dbline 32
                       ;   PORTD=0xff;
 0046  BB82              out 0x12,R24
 0047                    .dbline 33
                       ;   PORTB=0xff;
 0047  BB88              out 0x18,R24
 0048                    .dbline 34
                       ;   TIMSK=0x0a;//开放T0溢出中断和T1捕捉中断
 0048  E08A              ldi R24,10
 0049  BF89              out 0x39,R24
 004A                    .dbline 35
                       ;   TCCR0=0x03;
 004A  E083              ldi R24,3
 004B  BF83              out 0x33,R24
 004C                    .dbline 36
                       ;   TCCR1A=0x00;
 004C  BC2F              out 0x2f,R2
 004D                    .dbline 37
                       ;   TCCR1B=0xc0;
 004D  EC80              ldi R24,192
 004E  BD8E              out 0x2e,R24
 004F                    .dbline 38
                       ;   TCNT0=0x83;
 004F  E883              ldi R24,131
 0050  BF82              out 0x32,R24
 0051                    .dbline 39
                       ;   timecount=1000;
 0051  EE88              ldi R24,1000
 0052  E093              ldi R25,3
 0053  93900067          sts _timecount+1,R25
 0055  93800066          sts _timecount,R24
 0057                    .dbline 40}
                       ;  }
 0057                  L1:
 0057  9508              ret
 0058                    .dbfunc s display _display fI
                       ;              i -> R20
                         .even
 0058                  _display::
 0058  D129              rcall push_gset1
 0059                    .dbline 45{
                       ; /******************************
                       ;      六路动态扫描显示电路
                       ; ******************************/ 
                       ; void display(void)
                       ; {
 0059                    .dbline 47
                       ;  unsigned char i;
                       ;  for (i=0;i<6;i++)
 0059  2744              clr R20
 005A  C016              rjmp L6
 005B                  L3:
 005B                    .dbline 48
 005B                    .dbline 49
 005B  E680              ldi R24,<_ledbuff
 005C  E090              ldi R25,>_ledbuff
 005D  2FE4              mov R30,R20
 005E  27FF              clr R31
 005F  0FE8              add R30,R24
 0060  1FF9              adc R31,R25
 0061  8020              ldd R2,z+0
 0062  BA28              out 0x18,R2
 0063                    .dbline 50
 0063  E001              ldi R16,1
 0064  2F14              mov R17,R20
 0065  D154              rcall lsl8
 0066  2E20              mov R2,R16
 0067  9420              com R2
 0068  BA22              out 0x12,R2
 0069                    .dbline 51
 0069  D0D2              rcall _delay_1ms
 006A                    .dbline 52
 006A  E001              ldi R16,1
 006B  2F14              mov R17,R20
 006C  D14D              rcall lsl8
 006D  B222              in R2,0x12
 006E  2A20              or R2,R16
 006F  BA22              out 0x12,R2
 0070                    .dbline 53
 0070                  L4:
 0070                    .dbline 47
 0070  9543              inc R20
 0071                  L6:
 0071                    .dbline 47
 0071  3046              cpi R20,6
 0072  F340              brlo L3
 0073                    .dbline 54}
                       ;   {
                       ;    PORTB=ledbuff[i];//将显示缓冲区数据送PORTB口
                       ;    PORTD=~(1<<i);   //开始显示
                       ;    delay_1ms();     //每一位显示保持一定时间
                       ;    PORTD|=(1<<i);   //关闭显示
                       ;   }
                       ; }
 0073                  L2:
 0073  D111              rcall pop_gset1
 0074  9508              ret
 0075                    .dbsym r i 20 c
 0075                    .dbfunc s hextobcd _hextobcd fI
                       ;           temp -> R10
                       ;              i -> R12
                         .even
 0075                  _hextobcd::
 0075  D129              rcall push_gset4
 0076                    .dbline 59{
                       ; /************************************
                       ;   将count十六进制数据转换为LED七段码
                       ; ************************************/
                       ; void hextobcd(void)
                       ; {
 0076                    .dbline 61
                       ;   unsigned char i,temp;
                       ;   for (i=0;i<6;i++)
 0076  24CC              clr R12
 0077  C042              rjmp L11
 0078                  L8:
 0078                    .dbline 62
 0078                    .dbline 62
 0078  E306              ldi R16,<L12
 0079  E010              ldi R17,>L12
 007A  D12B              rcall lpm32
 007B  9050006B          lds R5,_count+2+1
 007D  9040006A          lds R4,_count+2
 007F  90300069          lds R3,_count+1
 0081  90200068          lds R2,_count
 0083  933A              st -y,R19
 0084  932A              st -y,R18
 0085  931A              st -y,R17
 0086  930A              st -y,R16
 0087  2D02              mov R16,R2
 0088  2D13              mov R17,R3
 0089  2D24              mov R18,R4
 008A  2D35              mov R19,R5
 008B  D17C              rcall mod32u
 008C  2EA0              mov R10,R16
 008D                    .dbline 63
 008D  E18A              ldi R24,<_tabel
 008E  E090              ldi R25,>_tabel
 008F  2C2A              mov R2,R10
 0090  2433              clr R3
 0091  0E28              add R2,R24
 0092  1E39              adc R3,R25
 0093  2DE2              mov R30,R2
 0094  2DF3              mov R31,R3
 0095  95C8              lpm
 0096  E680              ldi R24,<_ledbuff
 0097  E090              ldi R25,>_ledbuff
 0098  2DEC              mov R30,R12
 0099  27FF              clr R31
 009A  0FE8              add R30,R24
 009B  1FF9              adc R31,R25
 009C  8200              std z+0,R0
 009D                    .dbline 64
 009D  E306              ldi R16,<L12
 009E  E010              ldi R17,>L12
 009F  D106              rcall lpm32
 00A0  9050006B          lds R5,_count+2+1
 00A2  9040006A          lds R4,_count+2
 00A4  90300069          lds R3,_count+1
 00A6  90200068          lds R2,_count

⌨️ 快捷键说明

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