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

📄 main.lis

📁 ATMEGA128的SEG7驱动程序
💻 LIS
字号:
                        .module main.c
                        .area data(ram, con, rel)
 0000           _countnum::
 0000                   .blkb 2
                        .area idata
 0000 0000              .word 0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\Seg7\source\main.c
 0002                   .dbsym e countnum _countnum i
                        .area text(rom, con, rel)
 0000                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\Seg7\source\main.c
 0000                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0000           _timer1_init::
 0000                   .dbline -1
 0000                   .dbline 14
 0000           ; /************************************************
 0000           ; 文件:main.c
 0000           ; 用途:
 0000           ; 注意:内部8M晶振
 0000           ; 创建:2008.4.1
 0000           ; 修改:2008.4.1
 0000           ; Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
 0000           ; ************************************************/
 0000           ; 
 0000           ; #include "config.h"
 0000           ; volatile unsigned int countnum=0; 
 0000           ; 
 0000           ; void timer1_init(void)
 0000           ; {
 0000                   .dbline 15
 0000           ;  TCCR1B = 0x00; //stop
 0000 2224              clr R2
 0002 2EBC              out 0x2e,R2
 0004                   .dbline 16
 0004           ;  TCNT1H = 0x8F; //setup
 0004 8FE8              ldi R24,143
 0006 8DBD              out 0x2d,R24
 0008                   .dbline 17
 0008           ;  TCNT1L = 0x81;
 0008 81E8              ldi R24,129
 000A 8CBD              out 0x2c,R24
 000C                   .dbline 18
 000C           ;  OCR1AH = 0x70;
 000C 80E7              ldi R24,112
 000E 8BBD              out 0x2b,R24
 0010                   .dbline 19
 0010           ;  OCR1AL = 0x7F;
 0010 8FE7              ldi R24,127
 0012 8ABD              out 0x2a,R24
 0014                   .dbline 20
 0014           ;  OCR1BH = 0x70;
 0014 80E7              ldi R24,112
 0016 89BD              out 0x29,R24
 0018                   .dbline 21
 0018           ;  OCR1BL = 0x7F;
 0018 8FE7              ldi R24,127
 001A 88BD              out 0x28,R24
 001C                   .dbline 22
 001C           ;  OCR1CH = 0x70;
 001C 80E7              ldi R24,112
 001E 80937900          sts 121,R24
 0022                   .dbline 23
 0022           ;  OCR1CL = 0x7F;
 0022 8FE7              ldi R24,127
 0024 80937800          sts 120,R24
 0028                   .dbline 24
 0028           ;  ICR1H  = 0x70;
 0028 80E7              ldi R24,112
 002A 87BD              out 0x27,R24
 002C                   .dbline 25
 002C           ;  ICR1L  = 0x7F;
 002C 8FE7              ldi R24,127
 002E 86BD              out 0x26,R24
 0030                   .dbline 26
 0030           ;  TCCR1A = 0x00;
 0030 2FBC              out 0x2f,R2
 0032                   .dbline 27
 0032           ;  TCCR1B = 0x04; //start Timer
 0032 84E0              ldi R24,4
 0034 8EBD              out 0x2e,R24
 0036                   .dbline -2
 0036           L1:
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbend
                        .area vector(rom, abs)
                        .org 56
 0038 0C941C00          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 0038                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\Seg7\source\main.c
 0038                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 0038           _timer1_ovf_isr::
 0038 2A92              st -y,R2
 003A 3A92              st -y,R3
 003C 8A93              st -y,R24
 003E 9A93              st -y,R25
 0040 2FB6              in R2,0x3f
 0042 2A92              st -y,R2
 0044                   .dbline -1
 0044                   .dbline 32
 0044                   .dbline 33
 0044 8FE8              ldi R24,143
 0046 8DBD              out 0x2d,R24
 0048                   .dbline 34
 0048 81E8              ldi R24,129
 004A 8CBD              out 0x2c,R24
 004C                   .dbline 35
 004C 80910000          lds R24,_countnum
 0050 90910100          lds R25,_countnum+1
 0054 0196              adiw R24,1
 0056 90930100          sts _countnum+1,R25
 005A 80930000          sts _countnum,R24
 005E                   .dbline 36
 005E 8FE0              ldi R24,9999
 0060 97E2              ldi R25,39
 0062 20900000          lds R2,_countnum
 0066 30900100          lds R3,_countnum+1
 006A 8215              cp R24,R2
 006C 9305              cpc R25,R3
 006E 30F4              brsh L3
 0070                   .dbline 36
 0070 2224              clr R2
 0072 3324              clr R3
 0074 30920100          sts _countnum+1,R3
 0078 20920000          sts _countnum,R2
 007C           L3:
 007C                   .dbline -2
 007C           L2:
 007C 2990              ld R2,y+
 007E 2FBE              out 0x3f,R2
 0080 9991              ld R25,y+
 0082 8991              ld R24,y+
 0084 3990              ld R3,y+
 0086 2990              ld R2,y+
 0088                   .dbline 0 ; func end
 0088 1895              reti
 008A                   .dbend
 008A                   .dbfunc e init_devices _init_devices fV
                        .even
 008A           _init_devices::
 008A                   .dbline -1
 008A                   .dbline 40
 008A           ; }
 008A           ; 
 008A           ; #pragma interrupt_handler timer1_ovf_isr:15
 008A           ; void timer1_ovf_isr(void)
 008A           ; {
 008A           ;  TCNT1H = 0x8F; //reload counter high value
 008A           ;  TCNT1L = 0x81; //reload counter low value
 008A           ;  countnum++;
 008A           ;  if(countnum>9999) countnum=0;
 008A           ; }
 008A           ; 
 008A           ; void init_devices(void)
 008A           ; {
 008A                   .dbline 41
 008A           ;  CLI(); //disable all interrupts
 008A F894              cli
 008C                   .dbline 42
 008C           ;  timer1_init();
 008C B9DF              xcall _timer1_init
 008E                   .dbline 43
 008E           ;  TIMSK = 0x04; //timer interrupt sources
 008E 84E0              ldi R24,4
 0090 87BF              out 0x37,R24
 0092                   .dbline 44
 0092           ;  SEI(); //re-enable interrupts
 0092 7894              sei
 0094                   .dbline -2
 0094           L5:
 0094                   .dbline 0 ; func end
 0094 0895              ret
 0096                   .dbend
 0096                   .dbfunc e main _main fV
                        .even
 0096           _main::
 0096                   .dbline -1
 0096                   .dbline 48
 0096           ; }
 0096           ; 
 0096           ; void main(void)
 0096           ; {
 0096                   .dbline 49
 0096           ;  init_devices(); 
 0096 F9DF              xcall _init_devices
 0098                   .dbline 50
 0098           ;  HC_595_init();
 0098 0E940000          xcall _HC_595_init
 009C 06C0              xjmp L8
 009E           L7:
 009E                   .dbline 52
 009E                   .dbline 53
 009E 00910000          lds R16,_countnum
 00A2 10910100          lds R17,_countnum+1
 00A6 0E940000          xcall _Seg7_Led_display
 00AA                   .dbline 55
 00AA           L8:
 00AA                   .dbline 51
 00AA F9CF              xjmp L7
 00AC           X0:
 00AC                   .dbline -2
 00AC           L6:
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbend

⌨️ 快捷键说明

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