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

📄 timer.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0074 1081              ldd R17,z+0
 0076 0AE0              ldi R16,10
 0078 00D0              rcall mpy8s
 007A E62F              mov R30,R22
 007C F72F              mov R31,R23
 007E 2080              ldd R2,z+0
 0080 201A              sub R2,R16
 0082 E42F              mov R30,R20
 0084 F52F              mov R31,R21
 0086 2182              std z+1,R2
 0088                   .dbline 35
 0088           ;  p2[2]=p1[1]/10;
 0088 1AE0              ldi R17,10
 008A E62F              mov R30,R22
 008C F72F              mov R31,R23
 008E 0181              ldd R16,z+1
 0090 00D0              rcall div8u
 0092 E42F              mov R30,R20
 0094 F52F              mov R31,R21
 0096 0283              std z+2,R16
 0098                   .dbline 36
 0098           ;  p2[3]=p1[1]-p2[2]*10;
 0098 E42F              mov R30,R20
 009A F52F              mov R31,R21
 009C 1281              ldd R17,z+2
 009E 0AE0              ldi R16,10
 00A0 00D0              rcall mpy8s
 00A2 E62F              mov R30,R22
 00A4 F72F              mov R31,R23
 00A6 2180              ldd R2,z+1
 00A8 201A              sub R2,R16
 00AA E42F              mov R30,R20
 00AC F52F              mov R31,R21
 00AE 2382              std z+3,R2
 00B0                   .dbline -2
 00B0                   .dbline 37
 00B0           ; }
 00B0           L15:
 00B0 00D0              rcall pop_gset2
 00B2                   .dbline 0 ; func end
 00B2 0895              ret
 00B4                   .dbsym r p2 20 pc
 00B4                   .dbsym r p1 22 pc
 00B4                   .dbend
 00B4                   .dbfunc e Init_IO _Init_IO fV
                        .even
 00B4           _Init_IO::
 00B4                   .dbline -1
 00B4                   .dbline 40
 00B4           ; 
 00B4           ; void Init_IO(void)             //初始化I/O口
 00B4           ; {DDRA=0xff;                    //设置A口为推挽1输出
 00B4                   .dbline 40
 00B4 8FEF              ldi R24,255
 00B6 8ABB              out 0x1a,R24
 00B8                   .dbline 41
 00B8           ;  PORTA=0xff;
 00B8 8BBB              out 0x1b,R24
 00BA                   .dbline 42
 00BA           ;  DDRC=0xff;                    //设置C口为推挽1输出;             
 00BA 84BB              out 0x14,R24
 00BC                   .dbline 43
 00BC           ;  PORTC=0xff;
 00BC 85BB              out 0x15,R24
 00BE                   .dbline -2
 00BE                   .dbline 44
 00BE           ; }
 00BE           L16:
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbend
 00C0                   .dbfunc e main _main fV
 00C0           ;           Load -> <dead>
                        .even
 00C0           _main::
 00C0                   .dbline -1
 00C0                   .dbline 47
 00C0           ; 
 00C0           ; void main(void)
 00C0           ; {uchar Load; 
 00C0                   .dbline 48
 00C0           ;  Init_IO();                    //初始化I/O口
 00C0 F9DF              rcall _Init_IO
 00C2                   .dbline 49
 00C2           ;  PORTA=0xff;                   //点亮以测试所有的数码管
 00C2 8FEF              ldi R24,255
 00C4 8BBB              out 0x1b,R24
 00C6                   .dbline 50
 00C6           ;  PORTC=0x00;                   
 00C6 2224              clr R2
 00C8 25BA              out 0x15,R2
 00CA                   .dbline 51
 00CA           ;  DelayMs(3000);                //延时
 00CA 08EB              ldi R16,3000
 00CC 1BE0              ldi R17,11
 00CE 98DF              rcall _DelayMs
 00D0                   .dbline 52
 00D0           ;  PORTC=0xff;                   //熄灭所有的数码管
 00D0 8FEF              ldi R24,255
 00D2 85BB              out 0x15,R24
 00D4                   .dbline 53
 00D4           ;  TCCR0=0x04;                   //T/C0工作于定时方式,系统时钟256分频
 00D4 84E0              ldi R24,4
 00D6 83BF              out 0x33,R24
 00D8                   .dbline 54
 00D8           ;  TCNT0=0x06;                   //计数初始值6    
 00D8 86E0              ldi R24,6
 00DA 82BF              out 0x32,R24
 00DC 08C0              rjmp L19
 00DE           L18:
 00DE                   .dbline 56
 00DE                   .dbline 56
 00DE 20E0              ldi R18,<_Data
 00E0 30E0              ldi R19,>_Data
 00E2 00E0              ldi R16,<_Timer
 00E4 10E0              ldi R17,>_Timer
 00E6 B9DF              rcall _Process
 00E8                   .dbline 57
 00E8 00E0              ldi R16,<_Data
 00EA 10E0              ldi R17,>_Data
 00EC 9ADF              rcall _Display
 00EE                   .dbline 58
 00EE           L19:
 00EE                   .dbline 55
 00EE F7CF              rjmp L18
 00F0           X2:
 00F0                   .dbline -2
 00F0                   .dbline 59
 00F0           ;  while(1)
 00F0           ;  {Process(Timer,Data);          //计数值处理
 00F0           ;   Display(Data);               //动态扫描显示
 00F0           ;  }
 00F0           ; }
 00F0           L17:
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbsym l Load 1 c
 00F2                   .dbend
                        .area vector(rom, abs)
                        .org 18
 0012 79C0              rjmp _Timer0
                        .area text(rom, con, rel)
 00F2                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第二章\第二章程序\定时计数器的C语言编程\基于TC0的时钟设计\Timer.C
 00F2                   .dbfunc e Timer0 _Timer0 fV
                        .even
 00F2           _Timer0::
 00F2 2A92              st -y,R2
 00F4 8A93              st -y,R24
 00F6 9A93              st -y,R25
 00F8 2FB6              in R2,0x3f
 00FA 2A92              st -y,R2
 00FC                   .dbline -1
 00FC                   .dbline 64
 00FC           ; 
 00FC           ; //********************T/C0中断服务函数********************//
 00FC           ; #pragma interrupt_handler Timer0:10 
 00FC           ; void Timer0(void)
 00FC           ; {CNT++;                        //中断次数累加
 00FC                   .dbline 64
 00FC 80910E00          lds R24,_CNT
 0100 8F5F              subi R24,255    ; addi 1
 0102 80930E00          sts _CNT,R24
 0106                   .dbline 65
 0106           ;  if(CNT==125)           
 0106 8D37              cpi R24,125
 0108 C1F4              brne L22
 010A                   .dbline 66
 010A           ;     {CNT=0;                    //计数到125次,计数值复位
 010A                   .dbline 66
 010A 2224              clr R2
 010C 20920E00          sts _CNT,R2
 0110                   .dbline 67
 0110           ;        Timer[1]++;               //秒加1
 0110 80911000          lds R24,_Timer+1
 0114 8F5F              subi R24,255    ; addi 1
 0116 80931000          sts _Timer+1,R24
 011A                   .dbline 68
 011A           ;        if(Timer[1]==60)
 011A 8C33              cpi R24,60
 011C 39F4              brne L25
 011E                   .dbline 69
 011E           ;           {Timer[1]=0;
 011E                   .dbline 69
 011E 20921000          sts _Timer+1,R2
 0122                   .dbline 70
 0122           ;                Timer[0]++;}          //分进位
 0122 80910F00          lds R24,_Timer
 0126 8F5F              subi R24,255    ; addi 1
 0128 80930F00          sts _Timer,R24
 012C                   .dbline 70
 012C           L25:
 012C                   .dbline 71
 012C           ;      if(Timer[0]==60)
 012C 80910F00          lds R24,_Timer
 0130 8C33              cpi R24,60
 0132 19F4              brne L29
 0134                   .dbline 72
 0134 2224              clr R2
 0136 20920F00          sts _Timer,R2
 013A           L29:
 013A                   .dbline 72
 013A           L22:
 013A                   .dbline -2
 013A                   .dbline 73
 013A           ;            Timer[0]=0;}          //计数到达最高位,计数复位
 013A           ; }
 013A           L21:
 013A 2990              ld R2,y+
 013C 2FBE              out 0x3f,R2
 013E 9991              ld R25,y+
 0140 8991              ld R24,y+
 0142 2990              ld R2,y+
 0144                   .dbline 0 ; func end
 0144 1895              reti
 0146                   .dbend

⌨️ 快捷键说明

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