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

📄 delay.lis

📁 飞思卡尔U08开发平台下可以自由运行
💻 LIS
字号:
                        .module Delay.c
                        .area text
                ;              j -> 0,X
                ;              u -> 1,X
                ;              i -> 4,X
 0000           _Delay_ms::
 0000 A7FE              ais #-2
 0002 95                tsx
 0003           ; /*[头文件]*/
 0003           ; #include "GP32C.H"               //包含头文件
 0003           ; /*函数声明*/
 0003           ; void PWMconf(unsigned int);      //PWM设置
 0003           ; void PWMInit(unsigned int Period);
 0003           ; 
 0003           ; /*Delay_ms:毫秒级延时函数------------------------------*    
 0003           ; *功  能:延时函数                                       *
 0003           ; *参  数:i=延时时间(ms)     (i取值范围:1-255)           *
 0003           ; *返  回:无                                             *
 0003           ; *-----------------------------------------------------*/                            
 0003           ; void Delay_ms(unsigned char i)
 0003           ;   {  unsigned char j;
 0003           ;      unsigned char u;
 0003           ;      for(j=0;j<i;j++)
 0003 7F                clr ,X
 0004 200D              bra L5
 0006           L2:
 0006 6F01              clr 1,X
 0008 2002              bra L9
 000A           L6:
 000A           L7:
 000A 6C01              inc 1,X
 000C           L9:
 000C E601              lda 1,X
 000E A1FA              cmp #-6
 0010 23F8              bls L6
 0012           L3:
 0012 7C                inc ,X
 0013           L5:
 0013 F6                lda ,X
 0014 E104              cmp 4,X
 0016 25EE              blo L2
 0018           L1:
 0018 A702              ais #2
 001A                   .dbline 0 ; func end
 001A 81                rts
 001B           ;           Duty -> 2,X
 001B           ;         Period -> 4,X
 001B           ;             Hz -> 8,X
 001B           _PWMconf::
 001B A7FA              ais #-6
 001D 95                tsx
 001E           ;          for(u=0;u<=250;u++);
 001E           ;   }
 001E           ; 
 001E           ; 
 001E           ; void PWMconf(unsigned int Hz)
 001E           ;   {
 001E           ;      unsigned int Period,Duty;
 001E           ;      Period=2457600/64/Hz;
 001E 3F00              clr *__r1
 0020 3F00              clr *__r0
 0022 E609              lda 9,X
 0024 B700              sta *__r3
 0026 E608              lda 8,X
 0028 B700              sta *__r2
 002A 4F                clra
 002B 87                psha
 002C A696              lda #-106
 002E 87                psha
 002F 4F                clra
 0030 87                psha
 0031 87                psha
 0032 B600              lda *__r3
 0034 87                psha
 0035 B600              lda *__r2
 0037 87                psha
 0038 B600              lda *__r1
 003A 87                psha
 003B B600              lda *__r0
 003D 87                psha
 003E CD0000            jsr __divmod32s
 0041 A704              ais #4
 0043 86                pula
 0044 86                pula
 0045 86                pula
 0046 B700              sta *__r2
 0048 86                pula
 0049 B700              sta *__r1
 004B B600              lda *__r2
 004D E704              sta 4,X
 004F B600              lda *__r1
 0051 E705              sta 5,X
 0053           ;      PWMInit(Period);                              
 0053 87                psha
 0054 E604              lda 4,X
 0056 87                psha
 0057 CD0165            jsr _PWMInit
 005A A702              ais #2
 005C 95                tsx
 005D           ;      Duty=Period/1.2;
 005D E605              lda 5,X
 005F A401              and #1
 0061 B700              sta *__r1
 0063 4F                clra
 0064 B700              sta *__r0
 0066 B600              lda *__r1
 0068 87                psha
 0069 B600              lda *__r0
 006B 87                psha
 006C 4F                clra
 006D 87                psha
 006E 87                psha
 006F 9E6D03            tst 3,SP
 0072 2A06              bpl X0
 0074 9E6302            com 2,SP
 0077 9E6301            com 1,SP
 007A           X0:
 007A CD0000            jsr __long_to_SPfloat
 007D 86                pula
 007E B700              sta *__r0
 0080 86                pula
 0081 B700              sta *__r1
 0083 86                pula
 0084 B700              sta *__r2
 0086 86                pula
 0087 B700              sta *__r3
 0089 E605              lda 5,X
 008B B700              sta *__r5
 008D E604              lda 4,X
 008F B700              sta *__r4
 0091 3400              lsr *__r4
 0093 3600              ror *__r5
 0095 B600              lda *__r5
 0097 87                psha
 0098 B600              lda *__r4
 009A 87                psha
 009B 4F                clra
 009C 87                psha
 009D 87                psha
 009E 9E6D03            tst 3,SP
 00A1 2A06              bpl X1
 00A3 9E6302            com 2,SP
 00A6 9E6301            com 1,SP
 00A9           X1:
 00A9 CD0000            jsr __long_to_SPfloat
 00AC 4F                clra
 00AD 87                psha
 00AE 87                psha
 00AF 87                psha
 00B0 A640              lda #64
 00B2 87                psha
 00B3 CD0000            jsr __SPFloat_mul
 00B6 A704              ais #4
 00B8 B600              lda *__r3
 00BA 87                psha
 00BB B600              lda *__r2
 00BD 87                psha
 00BE B600              lda *__r1
 00C0 87                psha
 00C1 B600              lda *__r0
 00C3 87                psha
 00C4 CD0000            jsr __SPFloat_add
 00C7 A704              ais #4
 00C9 A69A              lda #-102
 00CB 87                psha
 00CC A699              lda #-103
 00CE 87                psha
 00CF 87                psha
 00D0 A63F              lda #63
 00D2 87                psha
 00D3 CD0000            jsr __SPFloat_div
 00D6 A704              ais #4
 00D8 86                pula
 00D9 B700              sta *__r0
 00DB 86                pula
 00DC B700              sta *__r1
 00DE 86                pula
 00DF B700              sta *__r2
 00E1 86                pula
 00E2 B700              sta *__r3
 00E4 87                psha
 00E5 B600              lda *__r2
 00E7 87                psha
 00E8 B600              lda *__r1
 00EA 87                psha
 00EB B600              lda *__r0
 00ED 87                psha
 00EE 4F                clra
 00EF 87                psha
 00F0 87                psha
 00F1 87                psha
 00F2 A647              lda #71
 00F4 87                psha
 00F5 CD0000            jsr __SPFloat_cmp_s
 00F8 A708              ais #8
 00FA 912C              blt L12
 00FC B600              lda *__r3
 00FE 87                psha
 00FF B600              lda *__r2
 0101 87                psha
 0102 B600              lda *__r1
 0104 87                psha
 0105 B600              lda *__r0
 0107 87                psha
 0108 4F                clra
 0109 87                psha
 010A 87                psha
 010B 87                psha
 010C A647              lda #71
 010E 87                psha
 010F CD0000            jsr __SPFloat_sub
 0112 A704              ais #4
 0114 CD0000            jsr __SPFloat_to_long
 0117 A702              ais #2
 0119 86                pula
 011A B700              sta *__r4
 011C 86                pula
 011D AB00              add #0
 011F E701              sta 1,X
 0121 B600              lda *__r4
 0123 A980              adc #-128
 0125 F7                sta ,X
 0126 201E              bra L13
 0128           L12:
 0128 B600              lda *__r3
 012A 87                psha
 012B B600              lda *__r2
 012D 87                psha
 012E B600              lda *__r1
 0130 87                psha
 0131 B600              lda *__r0
 0133 87                psha
 0134 CD0000            jsr __SPFloat_to_long
 0137 A702              ais #2
 0139 86                pula
 013A B700              sta *__r0
 013C 86                pula
 013D B700              sta *__r1
 013F B600              lda *__r0
 0141 F7                sta ,X
 0142 B600              lda *__r1
 0144 E701              sta 1,X
 0146           L13:
 0146 F6                lda ,X
 0147 E702              sta 2,X
 0149 E601              lda 1,X
 014B E703              sta 3,X
 014D           ;      T1SC|=(1<<5);        //停止定时器1计数器计数
 014D 1A20              bset #5,0x20
 014F           ;      //[设置PWM脉宽]
 014F           ;      T1CH0H = (Duty>>8);  //设置高字节
 014F E602              lda 2,X
 0151 B726              sta 0x26
 0153           ;      T1CH0L = Duty;       //设置低字节
 0153 E603              lda 3,X
 0155 B727              sta 0x27
 0157           ;      T1SC&=~(1<<5);       //允许定时器1计数器计数
 0157 1B20              bclr #5,0x20
 0159           ;      Delay_ms(2000);      //延时100ms
 0159 A6D0              lda #-48
 015B 87                psha
 015C CD0000            jsr _Delay_ms
 015F A701              ais #1
 0161 95                tsx
 0162           L10:
 0162 A706              ais #6
 0164                   .dbline 0 ; func end
 0164 81                rts
 0165           ;           Temp -> 0,X
 0165           ;         Period -> 4,X
 0165           _PWMInit::
 0165 A7FE              ais #-2
 0167 95                tsx
 0168           ;   }
 0168           ;   
 0168           ;   
 0168           ; /*PWMconf:PWM初始化设置--------------------------------*
 0168           ; * 功  能:PWM脉冲周期、占空比的设置                     *
 0168           ; * 参  数:rate=脉宽时钟数,cyc=脉冲周期时钟数            *
 0168           ; * 返  回:无                                            *
 0168           ; *-----------------------------------------------------*/
 0168           ; void PWMInit(unsigned int Period)
 0168           ; {    
 0168           ;     unsigned int Temp=Period;
 0168 E604              lda 4,X
 016A F7                sta ,X
 016B E605              lda 5,X
 016D E701              sta 1,X
 016F           ;     //不允许溢出中断,不启动计数,分频因子=64,置位TSTOP,TRST
 016F           ;     T1SC = 0x36;        
 016F A636              lda #54
 0171 B720              sta 0x20
 0173           ;     //[设置PWM周期]
 0173           ;     T1MODH = (Temp>>8);     
 0173 F6                lda ,X
 0174 B723              sta 0x23
 0176           ;     T1MODL = Period;      
 0176 E605              lda 5,X
 0178 B724              sta 0x24
 017A           ;     //[初始化设置PWM脉宽为0]
 017A           ;     T1CH0H = 0x00;
 017A 3F26              clr 0x26
 017C           ;     T1CH0L = 0x00;
 017C 3F27              clr 0x27
 017E           ;     //设为PWM模式,不允许输出比较中断,输出低电平,不带缓冲
 017E           ;     T1SC0  = 0x1E;      
 017E A61E              lda #30
 0180 B725              sta 0x25
 0182           ;     //允许定时器1计数寄存器计数           
 0182           ;     T1SC  &= 0xDF;      
 0182 B620              lda 0x20
 0184 A4DF              and #-33
 0186 B720              sta 0x20
 0188           L14:
 0188 A702              ais #2
 018A                   .dbline 0 ; func end
 018A 81                rts

⌨️ 快捷键说明

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