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

📄 delay.lis

📁 户外显示屏源程序
💻 LIS
字号:
                        .module delay.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\我的设计\delphi\uartdispy\mcu\delay.c
 0000                   .dbfunc e delayUs _delayUs fV
 0000           ;           temp -> R16
                        .even
 0000           _delayUs::
 0000                   .dbline -1
 0000                   .dbline 34
 0000           ; /*********************************Copyright (c)*********************************
 0000           ; **                              
 0000           ; ** 文   件   名: delayUs.c
 0000           ; ** 最后修改日期: 2005年06月8日
 0000           ; ** 描        述: 延迟函数文件
 0000           ; ** 版      本: V1.0
 0000           ; ** 主  控  芯 片:M16  晶振频率:8 MHZ
 0000           ; *******************************************************************************/
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "function.h"
 0000           ; #include "define.h"
 0000           ; 
 0000           ; 
 0000           ; /**********************************************************************
 0000           ; functionName:       void delayUs(BYTE temp)
 0000           ; description :      延时函数 晶振频率:7.3728MHZ
 0000           ; delayUs(1);               //2.71us
 0000           ; delayUs(2);               //3.53us
 0000           ; delayUs(4);               //5.15us
 0000           ; delayUs(8);               //8.41us
 0000           ; delayUs(16);          //14.92us
 0000           ; delayUs(32);          //27.94us
 0000           ; delayUs(64);          //53.98us
 0000           ; delayUs(128);         //106.07us
 0000           ; delayUs(255);         //209.42us
 0000           ; delayUs(18);          //16.55us
 0000           ; delayUs(34);          //29.57us
 0000           ; delayUs(35);          //30.38us
 0000           ; delayUs(100);         //83.28
 0000           ; _NOP();                           //0.14us  
 0000           ; **********************************************************************/
 0000           ; void delayUs(unsigned char temp)
 0000           ; {
 0000           L2:
 0000                   .dbline 35
 0000           L3:
 0000                   .dbline 35
 0000           ;        while(temp--);
 0000 202E              mov R2,R16
 0002 3324              clr R3
 0004 0150              subi R16,1
 0006 2220              tst R2
 0008 D9F7              brne L2
 000A                   .dbline -2
 000A           L1:
 000A                   .dbline 0 ; func end
 000A 0895              ret
 000C                   .dbsym r temp 16 c
 000C                   .dbend
 000C                   .dbfunc e delay_1us _delay_1us fV
                        .even
 000C           _delay_1us::
 000C                   .dbline -1
 000C                   .dbline 43
 000C           ; }
 000C           ; 
 000C           ; /*-----------------------------------------------------------------------
 000C           ; 延时函数
 000C           ; 系统时钟:8M
 000C           ; -----------------------------------------------------------------------*/
 000C           ; void delay_1us(void)                 //1us延时函数
 000C           ;   {
 000C                   .dbline 44
 000C           ;    asm("nop");
 000C 0000              nop
 000E                   .dbline -2
 000E           L5:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbend
 0010                   .dbfunc e delay_nus _delay_nus fV
 0010           ;              i -> R20,R21
 0010           ;              n -> R22,R23
                        .even
 0010           _delay_nus::
 0010 0E940000          xcall push_gset2
 0014 B801              movw R22,R16
 0016                   .dbline -1
 0016                   .dbline 48
 0016           ;   }
 0016           ; 
 0016           ; void delay_nus(unsigned int n)       //N us延时函数
 0016           ;   {
 0016                   .dbline 49
 0016           ;    unsigned int i=0;
 0016 4427              clr R20
 0018 5527              clr R21
 001A                   .dbline 50
 001A           ;    for (i=0;i<n;i++)
 001A 03C0              xjmp L10
 001C           L7:
 001C                   .dbline 51
 001C F7DF              xcall _delay_1us
 001E           L8:
 001E                   .dbline 50
 001E 4F5F              subi R20,255  ; offset = 1
 0020 5F4F              sbci R21,255
 0022           L10:
 0022                   .dbline 50
 0022 4617              cp R20,R22
 0024 5707              cpc R21,R23
 0026 D0F3              brlo L7
 0028                   .dbline -2
 0028           L6:
 0028 0E940000          xcall pop_gset2
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r i 20 i
 002E                   .dbsym r n 22 i
 002E                   .dbend
 002E                   .dbfunc e delay_1ms _delay_1ms fV
 002E           ;              i -> R16,R17
                        .even
 002E           _delay_1ms::
 002E                   .dbline -1
 002E                   .dbline 55
 002E           ;    delay_1us();
 002E           ;   }
 002E           ;   
 002E           ; void delay_1ms(void)                 //1ms延时函数
 002E           ;   {
 002E                   .dbline 57
 002E 0027              clr R16
 0030 1127              clr R17
 0032 02C0              xjmp L15
 0034           L12:
 0034                   .dbline 57
 0034           L13:
 0034                   .dbline 57
 0034 0F5F              subi R16,255  ; offset = 1
 0036 1F4F              sbci R17,255
 0038           L15:
 0038                   .dbline 57
 0038           ;    unsigned int i;
 0038           ;    for (i=0;i<1140;i++);
 0038 0437              cpi R16,116
 003A E4E0              ldi R30,4
 003C 1E07              cpc R17,R30
 003E D0F3              brlo L12
 0040                   .dbline -2
 0040           L11:
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r i 16 i
 0042                   .dbend
 0042                   .dbfunc e delay_nms _delay_nms fV
 0042           ;              i -> R20,R21
 0042           ;              n -> R22,R23
                        .even
 0042           _delay_nms::
 0042 0E940000          xcall push_gset2
 0046 B801              movw R22,R16
 0048                   .dbline -1
 0048                   .dbline 61
 0048           ;   }
 0048           ;   
 0048           ; void delay_nms(unsigned int n)       //N ms延时函数
 0048           ;   {
 0048                   .dbline 62
 0048           ;    unsigned int i=0;
 0048 4427              clr R20
 004A 5527              clr R21
 004C                   .dbline 63
 004C           ;    for (i=0;i<n;i++)
 004C 03C0              xjmp L20
 004E           L17:
 004E                   .dbline 64
 004E EFDF              xcall _delay_1ms
 0050           L18:
 0050                   .dbline 63
 0050 4F5F              subi R20,255  ; offset = 1
 0052 5F4F              sbci R21,255
 0054           L20:
 0054                   .dbline 63
 0054 4617              cp R20,R22
 0056 5707              cpc R21,R23
 0058 D0F3              brlo L17
 005A                   .dbline -2
 005A           L16:
 005A 0E940000          xcall pop_gset2
 005E                   .dbline 0 ; func end
 005E 0895              ret
 0060                   .dbsym r i 20 i
 0060                   .dbsym r n 22 i
 0060                   .dbend

⌨️ 快捷键说明

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