数码管.lis

来自「AVR之ATMega16」· LIS 代码 · 共 316 行

LIS
316
字号
                        .module _数码管.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 0000                   .dbfunc e DelayUS _DelayUS fV
 0000           ;           time -> R16,R17
                        .even
 0000           _DelayUS::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; //包含所需头文件
 0000           ; #include <ioM16v.h>
 0000           ; #include <macros.h>
 0000           ; #include"delay.h"
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /*------宏定义------*/
 0000           ; #define uchar unsigned char
 0000 02C0              xjmp L3
 0002           L2:
 0002                   .dbline 11
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006           L3:
 0006                   .dbline 10
 0006           ; #define uint  unsigned int
 0006 81E0              ldi R24,1
 0008 90E0              ldi R25,0
 000A 8017              cp R24,R16
 000C 9107              cpc R25,R17
 000E C8F3              brlo L2
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r time 16 i
 0012                   .dbend
 0012                   .dbfunc e DelayMS _DelayMS fV
 0012           ;              i -> R20,R21
 0012           ;           time -> R16,R17
                        .even
 0012           _DelayMS::
 0012 0E940000          xcall push_gset1
 0016                   .dbline -1
 0016                   .dbline 20
 0016           ; 
 0016           ; uchar led_date[]={0xC0,/*0*/0xF9,/*1*/0xA4,/*2*/0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xF8,/*7*/0x80,/*8*/0x90,/*9*/0x88,/*A*/0x83,/*b*/0xC6,/*c*/0xA1,/*d*/0x86,/*E*/0x8E,/*F*/};
 0016           ; uchar led_seg[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
 0016           ; //端口初始化
 0016           ; void port_init(void)
 0016           ; {
 0016           ;  PORTA = 0x00;//A口数据置0
 0016           ;  DDRA  = 0xFF;//A口方向设为输出
 0016           ;  PORTB = 0xFF;//B口数据置1
 0016           ;  DDRB  = 0xFF;//B口方向设为输出
 0016 09C0              xjmp L7
 0018           L6:
 0018                   .dbline 23
 0018           ;  PORTC = 0x00;
 0018           ;  DDRC  = 0x00;
 0018           ;  PORTD = 0x00;
 0018                   .dbline 24
 0018           ;  DDRD  = 0x00;
 0018 41E0              ldi R20,1
 001A 50E0              ldi R21,0
 001C 02C0              xjmp L12
 001E           L9:
 001E                   .dbline 25
 001E           L10:
 001E                   .dbline 24
 001E 4F5F              subi R20,255  ; offset = 1
 0020 5F4F              sbci R21,255
 0022           L12:
 0022                   .dbline 24
 0022 4D38              cpi R20,141
 0024 E0E0              ldi R30,0
 0026 5E07              cpc R21,R30
 0028 D0F3              brlo L9
 002A                   .dbline 26
 002A           L7:
 002A                   .dbline 22
 002A 1801              movw R2,R16
 002C 0150              subi R16,1
 002E 1040              sbci R17,0
 0030 2220              tst R2
 0032 91F7              brne L6
 0034 3320              tst R3
 0036 81F7              brne L6
 0038           X0:
 0038                   .dbline -2
 0038           L5:
 0038 0E940000          xcall pop_gset1
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbsym r i 20 i
 003E                   .dbsym r time 16 i
 003E                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 0000           _led_date::
 0000                   .blkb 2
                        .area idata
 0000 C0F9              .byte 192,249
                        .area data(ram, con, rel)
 0002                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 0002                   .blkb 2
                        .area idata
 0002 A4B0              .byte 164,176
                        .area data(ram, con, rel)
 0004                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 0004                   .blkb 2
                        .area idata
 0004 9992              .byte 153,146
                        .area data(ram, con, rel)
 0006                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 0006                   .blkb 2
                        .area idata
 0006 82F8              .byte 130,248
                        .area data(ram, con, rel)
 0008                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 0008                   .blkb 2
                        .area idata
 0008 8090              .byte 128,144
                        .area data(ram, con, rel)
 000A                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 000A                   .blkb 2
                        .area idata
 000A 8883              .byte 136,131
                        .area data(ram, con, rel)
 000C                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 000C                   .blkb 2
                        .area idata
 000C C6A1              .byte 198,161
                        .area data(ram, con, rel)
 000E                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 000E                   .blkb 2
                        .area idata
 000E 868E              .byte 134,142
                        .area data(ram, con, rel)
 0010                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管/delay.h
 0010                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管\数码管.c
 0010                   .dbsym e led_date _led_date A[16:16]c
 0010           _led_seg::
 0010                   .blkb 2
                        .area idata
 0010 FEFD              .byte 254,253
                        .area data(ram, con, rel)
 0012                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管\数码管.c
 0012                   .blkb 2
                        .area idata
 0012 FBF7              .byte 251,247
                        .area data(ram, con, rel)
 0014                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管\数码管.c
 0014                   .blkb 2
                        .area idata
 0014 EFDF              .byte 239,223
                        .area data(ram, con, rel)
 0016                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管\数码管.c
 0016                   .blkb 2
                        .area idata
 0016 BF7F              .byte 191,127
                        .area data(ram, con, rel)
 0018                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管\数码管.c
 0018                   .dbsym e led_seg _led_seg A[8:8]c
                        .area text(rom, con, rel)
 003E                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\数码管\数码管.c
 003E                   .dbfunc e port_init _port_init fV
                        .even
 003E           _port_init::
 003E                   .dbline -1
 003E                   .dbline 16
 003E                   .dbline 17
 003E 2224              clr R2
 0040 2BBA              out 0x1b,R2
 0042                   .dbline 18
 0042 8FEF              ldi R24,255
 0044 8ABB              out 0x1a,R24
 0046                   .dbline 19
 0046 88BB              out 0x18,R24
 0048                   .dbline 20
 0048 87BB              out 0x17,R24
 004A                   .dbline 21
 004A 25BA              out 0x15,R2
 004C                   .dbline 22
 004C 24BA              out 0x14,R2
 004E                   .dbline 23
 004E 22BA              out 0x12,R2
 0050                   .dbline 24
 0050 21BA              out 0x11,R2
 0052                   .dbline -2
 0052           L13:
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbend
 0054                   .dbfunc e init_devices _init_devices fV
                        .even
 0054           _init_devices::
 0054                   .dbline -1
 0054                   .dbline 29
 0054           ; }
 0054           ; 
 0054           ; 
 0054           ; void init_devices(void)
 0054           ; {
 0054                   .dbline 30
 0054           ;  CLI(); //禁止所有中断
 0054 F894              cli
 0056                   .dbline 31
 0056           ;  MCUCR  = 0x00;//外部中断触发方式
 0056 2224              clr R2
 0058 25BE              out 0x35,R2
 005A                   .dbline 32
 005A           ;  MCUCSR = 0x80;//禁止JTAG
 005A 80E8              ldi R24,128
 005C 84BF              out 0x34,R24
 005E                   .dbline 33
 005E           ;  GICR   = 0x00;//外部中断使能
 005E 2BBE              out 0x3b,R2
 0060                   .dbline 34
 0060           ;  port_init();
 0060 EEDF              xcall _port_init
 0062                   .dbline -2
 0062           L14:
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbend
 0064                   .dbfunc e main _main fV
 0064           ;              j -> R20
 0064           ;              i -> R22
                        .even
 0064           _main::
 0064                   .dbline -1
 0064                   .dbline 39
 0064           ;  //SEI();//开全局中断
 0064           ; }
 0064           ; //主函数
 0064           ; void main(void)
 0064           ; {
 0064                   .dbline 40
 0064           ;  uchar j=0,i=0;
 0064 4427              clr R20
 0066                   .dbline 40
 0066 6627              clr R22
 0068                   .dbline 41
 0068           ;  init_devices();
 0068 F5DF              xcall _init_devices
 006A 1DC0              xjmp L17
 006C           L16:
 006C                   .dbline 43
 006C           ;   while(1)
 006C           ;  {
 006C                   .dbline 44
 006C           ;  for(j=0;j<8;j++)
 006C 4427              clr R20
 006E 19C0              xjmp L22
 0070           L19:
 0070                   .dbline 45
 0070           ;  {
 0070                   .dbline 46
 0070           ;  PORTB=led_seg[j];//设置数码管选通位段
 0070 80E0              ldi R24,<_led_seg
 0072 90E0              ldi R25,>_led_seg
 0074 E42F              mov R30,R20
 0076 FF27              clr R31
 0078 E80F              add R30,R24
 007A F91F              adc R31,R25
 007C 2080              ldd R2,z+0
 007E 28BA              out 0x18,R2
 0080                   .dbline 47
 0080           ;  for(i=0;i<16;i++)
 0080 6627              clr R22
 0082 0CC0              xjmp L26
 0084           L23:
 0084                   .dbline 48
 0084                   .dbline 49
 0084 80E0              ldi R24,<_led_date
 0086 90E0              ldi R25,>_led_date
 0088 E62F              mov R30,R22
 008A FF27              clr R31
 008C E80F              add R30,R24
 008E F91F              adc R31,R25
 0090 2080              ldd R2,z+0
 0092 2BBA              out 0x1b,R2
 0094                   .dbline 50
 0094 0CE2              ldi R16,300
 0096 11E0              ldi R17,1
 0098 BCDF              xcall _DelayMS
 009A                   .dbline 51
 009A           L24:
 009A                   .dbline 47
 009A 6395              inc R22
 009C           L26:
 009C                   .dbline 47
 009C 6031              cpi R22,16
 009E 90F3              brlo L23
 00A0                   .dbline 52
 00A0           L20:
 00A0                   .dbline 44
 00A0 4395              inc R20
 00A2           L22:
 00A2                   .dbline 44
 00A2 4830              cpi R20,8
 00A4 28F3              brlo L19
 00A6                   .dbline 53
 00A6           L17:
 00A6                   .dbline 42
 00A6 E2CF              xjmp L16
 00A8           X1:
 00A8                   .dbline -2
 00A8           L15:
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbsym r j 20 c
 00AA                   .dbsym r i 22 c
 00AA                   .dbend

⌨️ 快捷键说明

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