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

📄 counter.lis

📁 avr 单片机的学习
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module Counter.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
                        .area data(ram, con, rel)
 0000                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 0000           _Table::
 0000                   .blkb 2
                        .area idata
 0000 3F06              .byte 63,6
                        .area data(ram, con, rel)
 0002                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 0002                   .blkb 2
                        .area idata
 0002 5B4F              .byte 91,'O
                        .area data(ram, con, rel)
 0004                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 0004                   .blkb 2
                        .area idata
 0004 666D              .byte 'f,'m
                        .area data(ram, con, rel)
 0006                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 0006                   .blkb 2
                        .area idata
 0006 7D07              .byte 125,7
                        .area data(ram, con, rel)
 0008                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 0008                   .blkb 2
                        .area idata
 0008 7F6F              .byte 127,'o
                        .area data(ram, con, rel)
 000A                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 000A                   .dbsym e Table _Table A[10:10]c
 000A           _Data::
 000A                   .blkb 2
                        .area idata
 000A 0000              .byte 0,0
                        .area data(ram, con, rel)
 000C                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 000C                   .blkb 2
                        .area idata
 000C 0000              .byte 0,0
                        .area data(ram, con, rel)
 000E                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 000E                   .dbsym e Data _Data A[4:4]c
 000E           _CNT::
 000E                   .blkb 2
                        .area idata
 000E 0000              .word 0
                        .area data(ram, con, rel)
 0010                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 0010                   .dbsym e CNT _CNT i
                        .area text(rom, con, rel)
 0000                   .dbfile G:\avr祥例·附原理图,及源代码c语言·\AVR单片机应用系统开发典型实例\实例源文件\第2章程序\定时计数器的c语言编程\基于tc0的计数器设计\Counter.c
 0000                   .dbfunc e DelayMs _DelayMs fV
 0000           ;              j -> R20,R21
 0000           ;              i -> R16,R17
                        .even
 0000           _DelayMs::
 0000 4A93              st -y,R20
 0002 5A93              st -y,R21
 0004                   .dbline -1
 0004                   .dbline 14
 0004           ; //******************************FileName: Counter.C*************************//
 0004           ; //******************************ICCAVR V6.30编译***************************//
 0004           ; 
 0004           ; #include <io8535v.h>                 
 0004           ; #define uchar unsigned char
 0004           ; #define uint  unsigned int
 0004           ; 
 0004           ; //数码管字型表,对应0,1,2,3,4,5,6,7,8,9//
 0004           ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
 0004           ; uchar Data[4]={0,0,0,0};       //显示初始值:0 0 0 0
 0004           ; uint  CNT=0;                    //初始计数值:0 
 0004           ; 
 0004           ; void DelayMs(uint i)           //Ms级延时,参数i为延时时间
 0004           ; {uint j;
 0004                   .dbline 15
 0004           ;  for(;i!=0;i--)
 0004 0AC0              rjmp L5
 0006           L2:
 0006                   .dbline 16
 0006           ;   {for(j=8000;j!=0;j--) {;}}
 0006                   .dbline 16
 0006 40E4              ldi R20,8000
 0008 5FE1              ldi R21,31
 000A 02C0              rjmp L9
 000C           L6:
 000C                   .dbline 16
 000C                   .dbline 16
 000C                   .dbline 16
 000C           L7:
 000C                   .dbline 16
 000C 4150              subi R20,1
 000E 5040              sbci R21,0
 0010           L9:
 0010                   .dbline 16
 0010 4030              cpi R20,0
 0012 4507              cpc R20,R21
 0014 D9F7              brne L6
 0016           X0:
 0016                   .dbline 16
 0016           L3:
 0016                   .dbline 15
 0016 0150              subi R16,1
 0018 1040              sbci R17,0
 001A           L5:
 001A                   .dbline 15
 001A 0030              cpi R16,0
 001C 0107              cpc R16,R17
 001E 99F7              brne L2
 0020           X1:
 0020                   .dbline -2
 0020           L1:
 0020                   .dbline 0 ; func end
 0020 5991              ld R21,y+
 0022 4991              ld R20,y+
 0024 0895              ret
 0026                   .dbsym r j 20 i
 0026                   .dbsym r i 16 i
 0026                   .dbend
 0026                   .dbfunc e Display _Display fV
 0026           ;            sel -> R22
 0026           ;              i -> R20
 0026           ;              p -> R10,R11
                        .even
 0026           _Display::
 0026 00D0              rcall push_xgsetF00C
 0028 5801              movw R10,R16
 002A                   .dbline -1
 002A                   .dbline 20
 002A           ; }
 002A           ; 
 002A           ; void Display(uchar *p)         //动态显示函数,参数p为待显示的数组名
 002A           ; {uchar i,sel=0x01;           
 002A                   .dbline 20
 002A 61E0              ldi R22,1
 002C                   .dbline 21
 002C           ;  for(i=0;i<4;i++)
 002C 4427              clr R20
 002E 12C0              rjmp L14
 0030           L11:
 0030                   .dbline 22
 0030           ;   {PORTC=sel;                  //选通最右边的数码管
 0030                   .dbline 22
 0030 65BB              out 0x15,R22
 0032                   .dbline 23
 0032           ;    PORTA=Table[p[i]];          //送字型码
 0032 E42F              mov R30,R20
 0034 FF27              clr R31
 0036 EA0D              add R30,R10
 0038 FB1D              adc R31,R11
 003A E081              ldd R30,z+0
 003C FF27              clr R31
 003E 80E0              ldi R24,<_Table
 0040 90E0              ldi R25,>_Table
 0042 E80F              add R30,R24
 0044 F91F              adc R31,R25
 0046 2080              ldd R2,z+0
 0048 2BBA              out 0x1b,R2
 004A                   .dbline 24
 004A           ;    DelayMs(2);                 //显示延时    
 004A 02E0              ldi R16,2
 004C 10E0              ldi R17,0
 004E D8DF              rcall _DelayMs
 0050                   .dbline 25
 0050           ;    sel=sel<<1;                 //移位以显示前一位
 0050 660F              lsl R22
 0052                   .dbline 26
 0052           ;   }
 0052           L12:
 0052                   .dbline 21
 0052 4395              inc R20
 0054           L14:
 0054                   .dbline 21
 0054 4430              cpi R20,4
 0056 60F3              brlo L11
 0058           X2:
 0058                   .dbline -2

⌨️ 快捷键说明

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