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

📄 delay.lis

📁 键盘操作 键盘扫描 用的是单片机mega16
💻 LIS
字号:
                        .module delay.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\avrvi\democode\key_4\source\lib\delay.c
 0000                   .dbfunc e Delay100us _Delay100us fV
 0000           ;              i -> R20
 0000           ;              n -> R16
                        .even
 0000           _Delay100us::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 36
 0004           ; /************************************************************
 0004           ; 文   件:delay.c
 0004           ; 用   途:delay100us和delay10ms软件延时函数
 0004           ; Target : 任意AVR
 0004           ; Crystal: #define F_CPU 进行设置
 0004           ; 说   明:请与delay.h配合使用
 0004           ;          请根据实际定义 #define F_CPU 为晶振大小
 0004           ;            有中断时,延时将不再准确
 0004           ; 创   建:2008.1.29
 0004           ; 修   改:2008.1.29
 0004           ; Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
 0004           ; ************************************************************/
 0004           ; 
 0004           ; #include "..\config.h"
 0004           ; 
 0004           ; 
 0004           ; 
 0004           ; //需要根据频率调整循环变量
 0004           ; #ifndef F_CPU
 0004           ; #define F_CPU 1000000                              //晶振频率
 0004           ; #endif
 0004           ; 
 0004           ; 
 0004           ; /*******************************************
 0004           ; ** 函数名称: void Delay100us(uint8 n)
 0004           ; ** 功能描述: 100us延时函数
 0004           ; ** 输 入: 延时的时间
 0004           ; ** 输出   : 无
 0004           ; ** 全局变量: 无
 0004           ; ** 调用模块: 
 0004           ; ** 说明:最大参数为255
 0004           ; ** 注意:如果中途有中断发生,延时将不只100us
 0004           ; ********************************************/
 0004           ; #define CONT_DELAY100US_COUNT F_CPU/100000
 0004           ; void Delay100us(uint8 n)      //最大255
 0004           ; {
 0004 0AC0              xjmp L3
 0006           L2:
 0006                   .dbline 39
 0006           ;       uint8 i;
 0006           ;       while(n--)                //5 clk       
 0006           ;           {
 0006                   .dbline 40
 0006           ;               i=CONT_DELAY100US_COUNT;  //1 clk
 0006 4AE0              ldi R20,10
 0008 03C0              xjmp L6
 000A           L5:
 000A                   .dbline 42
 000A                   .dbline 43
 000A 0000              nop
 000C                   .dbline 44
 000C 0000              nop
 000E                   .dbline 45
 000E 0000              nop
 0010                   .dbline 46
 0010           L6:
 0010                   .dbline 41
 0010 842F              mov R24,R20
 0012 8150              subi R24,1
 0014 482F              mov R20,R24
 0016 8823              tst R24
 0018 C1F7              brne L5
 001A                   .dbline 47
 001A           L3:
 001A                   .dbline 38
 001A 202E              mov R2,R16
 001C 3324              clr R3
 001E 0150              subi R16,1
 0020 2220              tst R2
 0022 89F7              brne L2
 0024                   .dbline -2
 0024           L1:
 0024 0E940000          xcall pop_gset1
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbsym r i 20 c
 002A                   .dbsym r n 16 c
 002A                   .dbend
 002A                   .dbfunc e Delay10ms _Delay10ms fV
 002A           ;              i -> R20,R21
 002A           ;              n -> R16
                        .even
 002A           _Delay10ms::
 002A 0E940000          xcall push_gset1
 002E                   .dbline -1
 002E                   .dbline 62
 002E           ;               while(--i)
 002E           ;                 {
 002E           ;                 NOP();
 002E           ;                 NOP();
 002E           ;                 NOP();
 002E           ;                 }          //10 clk
 002E           ;               }
 002E           ; }
 002E           ; 
 002E           ; /*******************************************
 002E           ; ** 函数名称: void Delay10ms(uint8 n)
 002E           ; ** 功能描述: 10ms延时函数
 002E           ; ** 输 入: 延时的时间
 002E           ; ** 输出   : 无
 002E           ; ** 全局变量: 无
 002E           ; ** 调用模块: 
 002E           ; ** 说明:最大参数为255
 002E           ; ** 注意:如果中途有中断发生,延时将不只10ms
 002E           ; ********************************************/
 002E           ; #define CONT_DELAY10MS_COUNT F_CPU/1000
 002E           ; void Delay10ms(uint8 n)       //最大255
 002E           ; {
 002E 0CC0              xjmp L10
 0030           L9:
 0030                   .dbline 65
 0030           ;       uint16 i;
 0030           ;       while(n--)                //5 clk       
 0030           ;           {
 0030                   .dbline 66
 0030           ;               i=CONT_DELAY10MS_COUNT;  //1 clk
 0030 48EE              ldi R20,1000
 0032 53E0              ldi R21,3
 0034 03C0              xjmp L13
 0036           L12:
 0036                   .dbline 68
 0036                   .dbline 69
 0036 0000              nop
 0038                   .dbline 70
 0038 0000              nop
 003A                   .dbline 71
 003A 0000              nop
 003C                   .dbline 72
 003C           L13:
 003C                   .dbline 67
 003C CA01              movw R24,R20
 003E 0197              sbiw R24,1
 0040 AC01              movw R20,R24
 0042 4030              cpi R20,0
 0044 4507              cpc R20,R21
 0046 B9F7              brne L12
 0048           X0:
 0048                   .dbline 73
 0048           L10:
 0048                   .dbline 64
 0048 202E              mov R2,R16
 004A 3324              clr R3
 004C 0150              subi R16,1
 004E 2220              tst R2
 0050 79F7              brne L9
 0052                   .dbline -2
 0052           L8:
 0052 0E940000          xcall pop_gset1
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbsym r i 20 i
 0058                   .dbsym r n 16 c
 0058                   .dbend

⌨️ 快捷键说明

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