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

📄 数字钟.lis

📁 ICC mega8例子
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0082           ; 介    绍:8M晶振
 0082           ; 入口参数:
 0082           ; 出口参数:
 0082           ; *************************************/
 0082           ; unsigned char CountNum;//用来记录中断,第一次中断是1/500S
 0082           ; unsigned char Count;//用来做1/100S
 0082           ; unsigned char Time[3]={12,0,0};//表示时间,时分秒
 0082           ; //初始化TC0
 0082           ; void init_timer0()
 0082           ; {
 0082                   .dbline 104
 0082           ;  TCCR0=0x00;//TCCR0工作于定时方式,先停止TC0
 0082 2224              clr R2
 0084 23BE              out 0x33,R2
 0086                   .dbline 105
 0086           ;  TCNT0=0x06;//计数器初始值
 0086 86E0              ldi R24,6
 0088 82BF              out 0x32,R24
 008A                   .dbline 106
 008A           ;  TIMSK|=(1<<TOIE0);//开放TOIE0中断
 008A 89B7              in R24,0x39
 008C 8160              ori R24,1
 008E 89BF              out 0x39,R24
 0090                   .dbline 107
 0090           ;  TCCR0=(1<<CS01)|(1<<CS00);//打开TC0用64分频
 0090 83E0              ldi R24,3
 0092 83BF              out 0x33,R24
 0094                   .dbline -2
 0094           L16:
 0094                   .dbline 0 ; func end
 0094 0895              ret
 0096                   .dbend
                        .area vector(rom, abs)
                        .org 18
 0012 4BC0              rjmp _timer0_fun
                        .area text(rom, con, rel)
 0096                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_数字钟\数字钟.c
 0096                   .dbfunc e timer0_fun _timer0_fun fV
                        .even
 0096           _timer0_fun::
 0096 2A92              st -y,R2
 0098 8A93              st -y,R24
 009A 9A93              st -y,R25
 009C 2FB6              in R2,0x3f
 009E 2A92              st -y,R2
 00A0                   .dbline -1
 00A0                   .dbline 112
 00A0           ; }
 00A0           ; //TC0中断函数
 00A0           ; #pragma interrupt_handler timer0_fun:iv_TIMER0_OVF
 00A0           ; void timer0_fun()
 00A0           ; {
 00A0                   .dbline 113
 00A0           ;  TCNT0=0x06;//重装初值
 00A0 86E0              ldi R24,6
 00A2 82BF              out 0x32,R24
 00A4                   .dbline 114
 00A4           ;  if (++CountNum==5)
 00A4 80910700          lds R24,_CountNum
 00A8 8F5F              subi R24,255    ; addi 1
 00AA 282E              mov R2,R24
 00AC 20920700          sts _CountNum,R2
 00B0 8530              cpi R24,5
 00B2 41F4              brne L18
 00B4           X3:
 00B4                   .dbline 115
 00B4           ;  {
 00B4                   .dbline 116
 00B4           ;   CountNum=0;
 00B4 2224              clr R2
 00B6 20920700          sts _CountNum,R2
 00BA                   .dbline 117
 00BA           ;   Count++;
 00BA 80910600          lds R24,_Count
 00BE 8F5F              subi R24,255    ; addi 1
 00C0 80930600          sts _Count,R24
 00C4                   .dbline 118
 00C4           ;  }
 00C4           L18:
 00C4                   .dbline 119
 00C4           ;  if (Count==100)//Count=100就是一秒到时了
 00C4 80910600          lds R24,_Count
 00C8 8436              cpi R24,100
 00CA 41F4              brne L20
 00CC           X4:
 00CC                   .dbline 120
 00CC           ;  {
 00CC                   .dbline 121
 00CC           ;   Count=0;
 00CC 2224              clr R2
 00CE 20920600          sts _Count,R2
 00D2                   .dbline 122
 00D2           ;   Time[2]++;
 00D2 80910200          lds R24,_Time+2
 00D6 8F5F              subi R24,255    ; addi 1
 00D8 80930200          sts _Time+2,R24
 00DC                   .dbline 123
 00DC           ;  }
 00DC           L20:
 00DC                   .dbline 124
 00DC           ;  if (Time[2]==60)
 00DC 80910200          lds R24,_Time+2
 00E0 8C33              cpi R24,60
 00E2 41F4              brne L23
 00E4           X5:
 00E4                   .dbline 125
 00E4           ;  {
 00E4                   .dbline 126
 00E4           ;   Time[2]=0;
 00E4 2224              clr R2
 00E6 20920200          sts _Time+2,R2
 00EA                   .dbline 127
 00EA           ;   Time[1]++;
 00EA 80910100          lds R24,_Time+1
 00EE 8F5F              subi R24,255    ; addi 1
 00F0 80930100          sts _Time+1,R24
 00F4                   .dbline 128
 00F4           ;  }
 00F4           L23:
 00F4                   .dbline 129
 00F4           ;  if (Time[1]==60)
 00F4 80910100          lds R24,_Time+1
 00F8 8C33              cpi R24,60
 00FA 41F4              brne L28
 00FC           X6:
 00FC                   .dbline 130
 00FC           ;  {
 00FC                   .dbline 131
 00FC           ;   Time[1]=0;
 00FC 2224              clr R2
 00FE 20920100          sts _Time+1,R2
 0102                   .dbline 132
 0102           ;   Time[0]++;
 0102 80910000          lds R24,_Time
 0106 8F5F              subi R24,255    ; addi 1
 0108 80930000          sts _Time,R24
 010C                   .dbline 133
 010C           ;  }
 010C           L28:
 010C                   .dbline 134
 010C           ;  if (Time[0]==24)
 010C 80910000          lds R24,_Time
 0110 8831              cpi R24,24
 0112 19F4              brne L32
 0114           X7:
 0114                   .dbline 135
 0114           ;  {
 0114                   .dbline 136
 0114           ;   Time[0]=0;
 0114 2224              clr R2
 0116 20920000          sts _Time,R2
 011A                   .dbline 137
 011A           ;  }
 011A           L32:
 011A                   .dbline -2
 011A           L17:
 011A                   .dbline 0 ; func end
 011A 2990              ld R2,y+
 011C 2FBE              out 0x3f,R2
 011E 9991              ld R25,y+
 0120 8991              ld R24,y+
 0122 2990              ld R2,y+
 0124 1895              reti
 0126                   .dbend
 0126                   .dbfunc e time_convert _time_convert fV
                        .even
 0126           _time_convert::
 0126                   .dbline -1
 0126                   .dbline 151
 0126           ; }
 0126           ; //************************************************
 0126           ; 
 0126           ;  unsigned char Time6[6];
 0126           ; /************************************
 0126           ; 用    途:时间的转换
 0126           ; Taget   :mega8
 0126           ; crystal :8M
 0126           ; 介    绍:
 0126           ; 入口参数:
 0126           ; 出口参数:
 0126           ; *************************************/
 0126           ; void time_convert()
 0126           ; {
 0126                   .dbline 152
 0126           ;  Time6[0]=Time[0]/10;
 0126 1AE0              ldi R17,10
 0128 00910000          lds R16,_Time
 012C 00D0              rcall div8u
 012E 00930000          sts _Time6,R16
 0132                   .dbline 153
 0132           ;  Time6[1]=Time[0]%10;
 0132 1AE0              ldi R17,10
 0134 00910000          lds R16,_Time
 0138 00D0              rcall mod8u
 013A 00930100          sts _Time6+1,R16
 013E                   .dbline 154
 013E           ;  Time6[2]=Time[1]/10;
 013E 1AE0              ldi R17,10
 0140 00910100          lds R16,_Time+1
 0144 00D0              rcall div8u
 0146 00930200          sts _Time6+2,R16
 014A                   .dbline 155
 014A           ;  Time6[3]=Time[1]%10;
 014A 1AE0              ldi R17,10
 014C 00910100          lds R16,_Time+1
 0150 00D0              rcall mod8u
 0152 00930300          sts _Time6+3,R16
 0156                   .dbline 156
 0156           ;  Time6[4]=Time[2]/10;
 0156 1AE0              ldi R17,10
 0158 00910200          lds R16,_Time+2
 015C 00D0              rcall div8u
 015E 00930400          sts _Time6+4,R16
 0162                   .dbline 157
 0162           ;  Time6[5]=Time[2]%10;
 0162 1AE0              ldi R17,10
 0164 00910200          lds R16,_Time+2
 0168 00D0              rcall mod8u
 016A 00930500          sts _Time6+5,R16
 016E                   .dbline -2
 016E           L34:
 016E                   .dbline 0 ; func end
 016E 0895              ret
 0170                   .dbend
 0170                   .dbfunc e main _main fV
                        .even
 0170           _main::
 0170                   .dbline -1
 0170                   .dbline 161
 0170           ; }
 0170           ; 
 0170           ; void main()
 0170           ; {
 0170                   .dbline 163
 0170           ; 
 0170           ;  port_init();
 0170 47DF              rcall _port_init
 0172                   .dbline 164
 0172           ;  init_devices();
 0172 4EDF              rcall _init_devices
 0174                   .dbline 166
 0174           ;  
 0174           ;  init_timer0();
 0174 86DF              rcall _init_timer0
 0176 04C0              rjmp L46
 0178           L45:
 0178                   .dbline 168
 0178           ;  while(1)
 0178           ;  {
 0178                   .dbline 169
 0178           ;   time_convert();
 0178 D6DF              rcall _time_convert
 017A                   .dbline 170
 017A           ;   show_6_digit(Time6);
 017A 00E0              ldi R16,<_Time6
 017C 10E0              ldi R17,>_Time6
 017E 58DF              rcall _show_6_digit
 0180                   .dbline 171
 0180           ;  }
 0180           L46:
 0180                   .dbline 167
 0180 FBCF              rjmp L45
 0182           X8:
 0182                   .dbline -2
 0182           L44:
 0182                   .dbline 0 ; func end
 0182 0895              ret
 0184                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_数字钟\数字钟.c
 0000           _Time6::
 0000                   .blkb 6
 0006                   .dbsym e Time6 _Time6 A[6:6]c
 0006           _Count::
 0006                   .blkb 1
 0007                   .dbsym e Count _Count c
 0007           _CountNum::
 0007                   .blkb 1
 0008                   .dbsym e CountNum _CountNum c
 0008           ; }

⌨️ 快捷键说明

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