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

📄 delay.lis

📁 摩托罗拉的脉冲信号输出的原代码
💻 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           ; /*Delay_ms:毫秒级延时函数------------------------------*    
 0003           ; *功  能:延时函数                                       *
 0003           ; *参  数:i=延时时间(ms)     (i取值范围:1-255)           *
 0003           ; *返  回:无                                             *
 0003           ; *-----------------------------------------------------*/  
 0003           ; #include "GP32C.H"               //包含头文件
 0003           ; #include "KB.h"               //键盘中断头文件  
 0003           ; extern void PWMInit(unsigned int );     //PWM初始化
 0003           ; extern void PWMmusic(unsigned int ); 
 0003           ; extern void Delay_ms(unsigned char );   //延时
 0003           ; unsigned int  Period; 
 0003           ; 
 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           ;         Period -> 2,X
 001B           ;       KB_valve -> 4,X
 001B           _hmusic::
 001B A7FB              ais #-5
 001D 95                tsx
 001E           ;          for(u=0;u<=250;u++) ;
 001E           ;   }
 001E           ; 
 001E           ; 
 001E           ; 
 001E           ; void hmusic()
 001E           ; {    unsigned int  Period;   //PWM周期
 001E           ;     unsigned char KB_valve;
 001E           ;     KB_Init();
 001E CD0000            jsr _KB_Init
 0021           ;     KB_valve=KB_Scan();     //扫描键值
 0021 CD0000            jsr _KB_Scan
 0024 95                tsx
 0025 B700              sta *__r1
 0027 E704              sta 4,X
 0029           ;     KB_valve=KB_Def(KB_valve);  //键值转化为定义值 
 0029 87                psha
 002A CD0000            jsr _KB_Def
 002D A701              ais #1
 002F 95                tsx
 0030 B700              sta *__r1
 0032 E704              sta 4,X
 0034           ;     
 0034           ; 
 0034           ;    switch(KB_valve)
 0034 7F                clr ,X
 0035 E701              sta 1,X
 0037 F6                lda ,X
 0038 2606              bne X0
 003A E601              lda 1,X
 003C A131              cmp #49
 003E 2738              beq L14
 0040           X0:
 0040 F6                lda ,X
 0041 2606              bne X1
 0043 E601              lda 1,X
 0045 A132              cmp #50
 0047 273C              beq L15
 0049           X1:
 0049 F6                lda ,X
 004A 2606              bne X2
 004C E601              lda 1,X
 004E A133              cmp #51
 0050 2740              beq L16
 0052           X2:
 0052 F6                lda ,X
 0053 2606              bne X3
 0055 E601              lda 1,X
 0057 A134              cmp #52
 0059 2744              beq L17
 005B           X3:
 005B F6                lda ,X
 005C 2606              bne X4
 005E E601              lda 1,X
 0060 A135              cmp #53
 0062 2748              beq L18
 0064           X4:
 0064 F6                lda ,X
 0065 2606              bne X5
 0067 E601              lda 1,X
 0069 A136              cmp #54
 006B 274C              beq L19
 006D           X5:
 006D F6                lda ,X
 006E 2606              bne X6
 0070 E601              lda 1,X
 0072 A137              cmp #55
 0074 2750              beq L20
 0076           X6:
 0076 2059              bra L11
 0078           X7:
 0078           ;    {  
 0078           L14:
 0078           ;        case '1':PWMmusic(1046);break;
 0078 450416            ldhx #1046
 007B 89                pshx
 007C 8B                pshh
 007D CD018D            jsr _PWMmusic
 0080 A702              ais #2
 0082 95                tsx
 0083 204C              bra L12
 0085           L15:
 0085           ;        case '2':PWMmusic(1175);break;
 0085 450497            ldhx #1175
 0088 89                pshx
 0089 8B                pshh
 008A CD018D            jsr _PWMmusic
 008D A702              ais #2
 008F 95                tsx
 0090 203F              bra L12
 0092           L16:
 0092           ;        case '3':PWMmusic(1318);break;
 0092 450526            ldhx #1318
 0095 89                pshx
 0096 8B                pshh
 0097 CD018D            jsr _PWMmusic
 009A A702              ais #2
 009C 95                tsx
 009D 2032              bra L12
 009F           L17:
 009F           ;        case '4':PWMmusic(1397);break;
 009F 450575            ldhx #1397
 00A2 89                pshx
 00A3 8B                pshh
 00A4 CD018D            jsr _PWMmusic
 00A7 A702              ais #2
 00A9 95                tsx
 00AA 2025              bra L12
 00AC           L18:
 00AC           ;        case '5':PWMmusic(1568);break;
 00AC 450620            ldhx #1568
 00AF 89                pshx
 00B0 8B                pshh
 00B1 CD018D            jsr _PWMmusic
 00B4 A702              ais #2
 00B6 95                tsx
 00B7 2018              bra L12
 00B9           L19:
 00B9           ;        case '6':PWMmusic(1760);break;
 00B9 4506E0            ldhx #1760
 00BC 89                pshx
 00BD 8B                pshh
 00BE CD018D            jsr _PWMmusic
 00C1 A702              ais #2
 00C3 95                tsx
 00C4 200B              bra L12
 00C6           L20:
 00C6           ;        case '7':PWMmusic(1976);break;
 00C6 4507B8            ldhx #1976
 00C9 89                pshx
 00CA 8B                pshh
 00CB CD018D            jsr _PWMmusic
 00CE A702              ais #2
 00D0 95                tsx
 00D1           L11:
 00D1           L12:
 00D1           L10:
 00D1 A705              ais #5
 00D3                   .dbline 0 ; func end
 00D3 81                rts
 00D4           ;         Period -> 2,X
 00D4           ;       KB_valve -> 4,X
 00D4           _Lmusic::
 00D4 A7FB              ais #-5
 00D6 95                tsx
 00D7           ;        
 00D7           ;      }
 00D7           ; 
 00D7           ; }
 00D7           ; 
 00D7           ; 
 00D7           ; void Lmusic()
 00D7           ; {    unsigned int  Period;   //PWM周期
 00D7           ;     unsigned char KB_valve;
 00D7           ;     KB_Init();
 00D7 CD0000            jsr _KB_Init
 00DA           ;     KB_valve=KB_Scan();     //扫描键值
 00DA CD0000            jsr _KB_Scan
 00DD 95                tsx
 00DE B700              sta *__r1
 00E0 E704              sta 4,X
 00E2           ;     KB_valve=KB_Def(KB_valve);  //键值转化为定义值 
 00E2 87                psha
 00E3 CD0000            jsr _KB_Def
 00E6 A701              ais #1
 00E8 95                tsx
 00E9 B700              sta *__r1
 00EB E704              sta 4,X
 00ED           ;     
 00ED           ; 
 00ED           ;    switch(KB_valve)
 00ED 7F                clr ,X
 00EE E701              sta 1,X
 00F0 F6                lda ,X
 00F1 2606              bne X8
 00F3 E601              lda 1,X
 00F5 A131              cmp #49
 00F7 2738              beq L25
 00F9           X8:
 00F9 F6                lda ,X
 00FA 2606              bne X9
 00FC E601              lda 1,X
 00FE A132              cmp #50
 0100 273C              beq L26
 0102           X9:
 0102 F6                lda ,X
 0103 2606              bne X10
 0105 E601              lda 1,X
 0107 A133              cmp #51
 0109 2740              beq L27
 010B           X10:
 010B F6                lda ,X
 010C 2606              bne X11
 010E E601              lda 1,X
 0110 A134              cmp #52
 0112 2744              beq L28
 0114           X11:
 0114 F6                lda ,X
 0115 2606              bne X12
 0117 E601              lda 1,X
 0119 A135              cmp #53
 011B 2748              beq L29
 011D           X12:
 011D F6                lda ,X
 011E 2606              bne X13
 0120 E601              lda 1,X
 0122 A136              cmp #54
 0124 274C              beq L30
 0126           X13:
 0126 F6                lda ,X
 0127 2606              bne X14
 0129 E601              lda 1,X
 012B A137              cmp #55
 012D 2750              beq L31
 012F           X14:
 012F 2059              bra L22
 0131           X15:
 0131           ;    {  
 0131           L25:
 0131           ;        case '1':PWMmusic(262);break;
 0131 450106            ldhx #262
 0134 89                pshx
 0135 8B                pshh
 0136 CD018D            jsr _PWMmusic
 0139 A702              ais #2
 013B 95                tsx
 013C 204C              bra L23
 013E           L26:
 013E           ;        case '2':PWMmusic(294);break;
 013E 450126            ldhx #294
 0141 89                pshx
 0142 8B                pshh
 0143 CD018D            jsr _PWMmusic
 0146 A702              ais #2
 0148 95                tsx
 0149 203F              bra L23
 014B           L27:
 014B           ;        case '3':PWMmusic(330);break;
 014B 45014A            ldhx #330
 014E 89                pshx
 014F 8B                pshh
 0150 CD018D            jsr _PWMmusic
 0153 A702              ais #2
 0155 95                tsx
 0156 2032              bra L23
 0158           L28:
 0158           ;        case '4':PWMmusic(349);break;
 0158 45015D            ldhx #349
 015B 89                pshx
 015C 8B                pshh
 015D CD018D            jsr _PWMmusic
 0160 A702              ais #2
 0162 95                tsx
 0163 2025              bra L23
 0165           L29:
 0165           ;        case '5':PWMmusic(392);break;
 0165 450188            ldhx #392
 0168 89                pshx
 0169 8B                pshh
 016A CD018D            jsr _PWMmusic
 016D A702              ais #2
 016F 95                tsx
 0170 2018              bra L23
 0172           L30:
 0172           ;        case '6':PWMmusic(440);break;
 0172 4501B8            ldhx #440
 0175 89                pshx
 0176 8B                pshh
 0177 CD018D            jsr _PWMmusic
 017A A702              ais #2
 017C 95                tsx
 017D 200B              bra L23
 017F           L31:
 017F           ;        case '7':PWMmusic(494);break;
 017F 4501EE            ldhx #494
 0182 89                pshx
 0183 8B                pshh
 0184 CD018D            jsr _PWMmusic
 0187 A702              ais #2
 0189 95                tsx
 018A           L22:
 018A           L23:
 018A           L21:
 018A A705              ais #5
 018C                   .dbline 0 ; func end
 018C 81                rts
 018D           ;           Duty -> 0,X
 018D           ;         Period -> 2,X
 018D           ;             HZ -> 6,X
 018D           _PWMmusic::
 018D A7FC              ais #-4
 018F 95                tsx
 0190           ;        
 0190           ;      }
 0190           ; 
 0190           ; }
 0190           ; 
 0190           ; 
 0190           ; 
 0190           ; 
 0190           ; void PWMmusic(unsigned int HZ)
 0190           ; {  
 0190           ;     unsigned int  Period;   //PWM周期
 0190           ;     unsigned int  Duty;     //PWM占空比
 0190           ;    Period=(2457600/64)/HZ;
 0190 3F00              clr *__r1
 0192 3F00              clr *__r0
 0194 E607              lda 7,X
 0196 B700              sta *__r3
 0198 E606              lda 6,X
 019A B700              sta *__r2
 019C 4F                clra
 019D 87                psha
 019E A696              lda #-106
 01A0 87                psha
 01A1 4F                clra
 01A2 87                psha
 01A3 87                psha
 01A4 B600              lda *__r3
 01A6 87                psha
 01A7 B600              lda *__r2
 01A9 87                psha
 01AA B600              lda *__r1
 01AC 87                psha
 01AD B600              lda *__r0
 01AF 87                psha
 01B0 CD0000            jsr __divmod32s
 01B3 A704              ais #4
 01B5 86                pula
 01B6 86                pula
 01B7 86                pula
 01B8 B700              sta *__r2
 01BA 86                pula
 01BB B700              sta *__r1
 01BD B600              lda *__r2
 01BF E702              sta 2,X
 01C1 B600              lda *__r1
 01C3 E703              sta 3,X
 01C5           ;     PWMInit(Period);
 01C5 87                psha
 01C6 E602              lda 2,X
 01C8 87                psha
 01C9 CD0000            jsr _PWMInit
 01CC A702              ais #2
 01CE 95                tsx
 01CF           ;    Duty=Period/2;
 01CF E603              lda 3,X
 01D1 B700              sta *__r1
 01D3 E602              lda 2,X
 01D5 B700              sta *__r0
 01D7 3400              lsr *__r0
 01D9 3600              ror *__r1
 01DB B600              lda *__r0
 01DD F7                sta ,X
 01DE B600              lda *__r1
 01E0 E701              sta 1,X
 01E2           ;    
 01E2           ;    
 01E2           ;  
 01E2           ;       T1SC|=(1<<5);        //停止定时器1计数器计数
 01E2 1A20              bset #5,0x20
 01E4           ;       //[设置PWM脉宽]
 01E4           ;       T1CH0H = (Duty>>8);  //设置高字节
 01E4 F6                lda ,X
 01E5 B726              sta 0x26
 01E7           ;       T1CH0L = Duty;       //设置低字节
 01E7 E601              lda 1,X
 01E9 B727              sta 0x27
 01EB           ;       T1SC&=~(1<<5);       //允许定时器1计数器计数     
 01EB 1B20              bclr #5,0x20
 01ED           ;         Delay_ms(10);      //延时10ms
 01ED A60A              lda #10
 01EF 87                psha
 01F0 CD0000            jsr _Delay_ms
 01F3 A701              ais #1
 01F5 95                tsx
 01F6           L32:
 01F6 A704              ais #4
 01F8                   .dbline 0 ; func end
 01F8 81                rts
                        .area bss
 0000           _Period::
 0000                   .blkb 2

⌨️ 快捷键说明

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