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

📄 数字钟.lis

📁 ICC mega8例子
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _数字钟.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_数字钟\数字钟.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; //ICC-AVR application builder : 2009-3-11 12:47:48
 0000           ; // Target : M8
 0000           ; // Crystal: 8.0000Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 10
 0000           ;  PORTB = 0x00;
 0000 2224              clr R2
 0002 28BA              out 0x18,R2
 0004                   .dbline 11
 0004           ;  DDRB  = 0x00;
 0004 27BA              out 0x17,R2
 0006                   .dbline 12
 0006           ;  PORTC = 0x00; //m103 output only
 0006 25BA              out 0x15,R2
 0008                   .dbline 13
 0008           ;  DDRC  = 0x00;
 0008 24BA              out 0x14,R2
 000A                   .dbline 14
 000A           ;  PORTD = 0x00;
 000A 22BA              out 0x12,R2
 000C                   .dbline 15
 000C           ;  DDRD  = 0x00;
 000C 21BA              out 0x11,R2
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbend
 0010                   .dbfunc e init_devices _init_devices fV
                        .even
 0010           _init_devices::
 0010                   .dbline -1
 0010                   .dbline 20
 0010           ; }
 0010           ; 
 0010           ; //call this routine to initialize all peripherals
 0010           ; void init_devices(void)
 0010           ; {
 0010                   .dbline 22
 0010           ;  //stop errant interrupts until set up
 0010           ;  CLI(); //disable all interrupts
 0010 F894              cli
 0012                   .dbline 23
 0012           ;  port_init();
 0012 F6DF              rcall _port_init
 0014                   .dbline 25
 0014           ; 
 0014           ;  MCUCR = 0x00;
 0014 2224              clr R2
 0016 25BE              out 0x35,R2
 0018                   .dbline 26
 0018           ;  GICR  = 0x00;
 0018 2BBE              out 0x3b,R2
 001A                   .dbline 27
 001A           ;  TIMSK = 0x00; //timer interrupt sources
 001A 29BE              out 0x39,R2
 001C                   .dbline 28
 001C           ;  SEI(); //re-enable interrupts
 001C 7894              sei
 001E                   .dbline -2
 001E           L2:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e delay_us _delay_us fV
 0020           ;           time -> R16,R17
                        .even
 0020           _delay_us::
 0020                   .dbline -1
 0020                   .dbline 40
 0020           ;  //all peripherals are now initialized
 0020           ; }
 0020           ; 
 0020           ; /************************************
 0020           ; 用    途:微秒级延时程序
 0020           ; Taget   :mega8
 0020           ; crystal :8M
 0020           ; 介    绍:在8M的晶振上进行us级的延时
 0020           ; 入口参数:
 0020           ; *************************************/
 0020           ; void delay_us(int time)
 0020           ; {
 0020           L4:
 0020                   .dbline 42
 0020           ;     do
 0020           ;     {
 0020                   .dbline 43
 0020           ;         time--;
 0020 0150              subi R16,1
 0022 1040              sbci R17,0
 0024                   .dbline 44
 0024           ;     } 
 0024           L5:
 0024                   .dbline 45
 0024           ;     while (time > 1);
 0024 81E0              ldi R24,1
 0026 90E0              ldi R25,0
 0028 8017              cp R24,R16
 002A 9107              cpc R25,R17
 002C CCF3              brlt L4
 002E           X0:
 002E                   .dbline -2
 002E           L3:
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbsym r time 16 I
 0030                   .dbend
                        .area lit(rom, con, rel)
 0000           _num::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A 777C              .byte 'w,124
 000C 395E              .byte 57,94
 000E 7971              .byte 'y,'q
 0010                   .dbsym e num _num A[16:16]kc
                        .area text(rom, con, rel)
 0030                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_数字钟\数字钟.c
 0030                   .dbfunc e show_6_digit _show_6_digit fV
 0030           ;              j -> R20
 0030           ;              i -> R10
 0030           ;              p -> R22,R23
                        .even
 0030           _show_6_digit::
 0030 00D0              rcall push_xgsetF00C
 0032 B801              movw R22,R16
 0034                   .dbline -1
 0034                   .dbline 74
 0034           ; }
 0034           ; 
 0034           ; /************************************
 0034           ; 用    途:六位数码管的显示程序
 0034           ; Taget   :mega8
 0034           ; crystal :8M
 0034           ; 介    绍:数码管共阳
 0034           ;            a-PB0
 0034           ;                b-PB1
 0034           ;                ...
 0034           ;                h-PB6
 0034           ;                DP-PB7
 0034           ;                -------
 0034           ;                1-PC5
 0034           ;                2-PC4
 0034           ;                3-PC3
 0034           ;                4-PC2
 0034           ;                5-PC1
 0034           ;                6-PC0
 0034           ;            使用show_6_digit(p)
 0034           ;            unsigned char数组
 0034           ;                B用作数据口
 0034           ;          C用作片选
 0034           ; 入口参数:显示数组
 0034           ; *************************************/
 0034           ; const unsigned char num[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
 0034           ;                               0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
 0034           ; void show_6_digit(unsigned char *p)
 0034           ; {
 0034                   .dbline 76
 0034           ;  unsigned char i,j;
 0034           ;  DDRB=0xff;
 0034 8FEF              ldi R24,255
 0036 87BB              out 0x17,R24
 0038                   .dbline 77
 0038           ;  DDRC=0xff;
 0038 84BB              out 0x14,R24
 003A                   .dbline 78
 003A           ;  for (j=0;j<200;j++)
 003A 4427              clr R20
 003C 1FC0              rjmp L11
 003E           L8:
 003E                   .dbline 79
 003E           ;  {
 003E                   .dbline 80
 003E           ;   for (i=0;i<6;i++)
 003E AA24              clr R10
 0040 19C0              rjmp L15
 0042           L12:
 0042                   .dbline 81
 0042           ;   {
 0042                   .dbline 82
 0042           ;     PORTC=0;//先关显示
 0042 2224              clr R2
 0044 25BA              out 0x15,R2
 0046                   .dbline 83
 0046           ;     PORTB=~num[*(p+5-i)];//送数据
 0046 2A2C              mov R2,R10
 0048 3324              clr R3
 004A FB01              movw R30,R22
 004C 3596              adiw R30,5
 004E E219              sub R30,R2
 0050 F309              sbc R31,R3
 0052 E081              ldd R30,z+0
 0054 FF27              clr R31
 0056 80E0              ldi R24,<_num
 0058 90E0              ldi R25,>_num
 005A E80F              add R30,R24
 005C F91F              adc R31,R25
 005E 2490              lpm R2,Z
 0060 2094              com R2
 0062 28BA              out 0x18,R2
 0064                   .dbline 84
 0064           ;       PORTC=(0x1<<i);//开显示
 0064 01E0              ldi R16,1
 0066 1A2D              mov R17,R10
 0068 00D0              rcall lsl8
 006A 05BB              out 0x15,R16
 006C                   .dbline 85
 006C           ;       delay_us(200);//小延时
 006C 08EC              ldi R16,200
 006E 10E0              ldi R17,0
 0070 D7DF              rcall _delay_us
 0072                   .dbline 86
 0072           ;   }
 0072           L13:
 0072                   .dbline 80
 0072 A394              inc R10
 0074           L15:
 0074                   .dbline 80
 0074 8A2D              mov R24,R10
 0076 8630              cpi R24,6
 0078 20F3              brlo L12
 007A           X1:
 007A                   .dbline 87
 007A           ;  }
 007A           L9:
 007A                   .dbline 78
 007A 4395              inc R20
 007C           L11:
 007C                   .dbline 78
 007C 483C              cpi R20,200
 007E F8F2              brlo L8
 0080           X2:
 0080                   .dbline -2
 0080           L7:
 0080                   .dbline 0 ; func end
 0080 00C0              rjmp pop_xgsetF00C
 0082                   .dbsym r j 20 c
 0082                   .dbsym r i 10 c
 0082                   .dbsym r p 22 pc
 0082                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_数字钟\数字钟.c
 0000           _Time::
 0000                   .blkb 2
                        .area idata
 0000 0C00              .byte 12,0
                        .area data(ram, con, rel)
 0002                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_数字钟\数字钟.c
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_数字钟\数字钟.c
 0003                   .dbsym e Time _Time A[3:3]c
                        .area text(rom, con, rel)
 0082                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_数字钟\数字钟.c
 0082                   .dbfunc e init_timer0 _init_timer0 fV
                        .even
 0082           _init_timer0::
 0082                   .dbline -1
 0082                   .dbline 103
 0082           ; }
 0082           ; 
 0082           ; /************************************
 0082           ; 用    途:用TC0做一个时钟
 0082           ; Taget   :mega8
 0082           ; crystal :8M

⌨️ 快捷键说明

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