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

📄 delay.s

📁 摩托罗拉的脉冲信号输出的原代码
💻 S
字号:
	.module Delay.c
	.area text
;              j -> 0,X
;              u -> 1,X
;              i -> 4,X
_Delay_ms::
	ais #-2
	tsx
; /*Delay_ms:毫秒级延时函数------------------------------*    
; *功  能:延时函数                                       *
; *参  数:i=延时时间(ms)     (i取值范围:1-255)           *
; *返  回:无                                             *
; *-----------------------------------------------------*/  
; #include "GP32C.H"               //包含头文件
; #include "KB.h"               //键盘中断头文件  
; extern void PWMInit(unsigned int );     //PWM初始化
; extern void PWMmusic(unsigned int ); 
; extern void Delay_ms(unsigned char );   //延时
; unsigned int  Period; 
; 
; 
;                         
; void Delay_ms(unsigned char i)
;   {  unsigned char j;
;      unsigned char u;
;      for(j=0;j<i;j++)
	clr ,X
	bra L5
L2:
	clr 1,X
	bra L9
L6:
L7:
	inc 1,X
L9:
	lda 1,X
	cmp #-6
	bls L6
L3:
	inc ,X
L5:
	lda ,X
	cmp 4,X
	blo L2
L1:
	ais #2
	.dbline 0 ; func end
	rts
;         Period -> 2,X
;       KB_valve -> 4,X
_hmusic::
	ais #-5
	tsx
;          for(u=0;u<=250;u++) ;
;   }
; 
; 
; 
; void hmusic()
; {    unsigned int  Period;   //PWM周期
;     unsigned char KB_valve;
;     KB_Init();
	jsr _KB_Init
;     KB_valve=KB_Scan();     //扫描键值
	jsr _KB_Scan
	tsx
	sta *__r1
	sta 4,X
;     KB_valve=KB_Def(KB_valve);  //键值转化为定义值 
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta 4,X
;     
; 
;    switch(KB_valve)
	clr ,X
	sta 1,X
	lda ,X
	bne X0
	lda 1,X
	cmp #49
	beq L14
X0:
	lda ,X
	bne X1
	lda 1,X
	cmp #50
	beq L15
X1:
	lda ,X
	bne X2
	lda 1,X
	cmp #51
	beq L16
X2:
	lda ,X
	bne X3
	lda 1,X
	cmp #52
	beq L17
X3:
	lda ,X
	bne X4
	lda 1,X
	cmp #53
	beq L18
X4:
	lda ,X
	bne X5
	lda 1,X
	cmp #54
	beq L19
X5:
	lda ,X
	bne X6
	lda 1,X
	cmp #55
	beq L20
X6:
	bra L11
X7:
;    {  
L14:
;        case '1':PWMmusic(1046);break;
	ldhx #1046
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L12
L15:
;        case '2':PWMmusic(1175);break;
	ldhx #1175
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L12
L16:
;        case '3':PWMmusic(1318);break;
	ldhx #1318
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L12
L17:
;        case '4':PWMmusic(1397);break;
	ldhx #1397
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L12
L18:
;        case '5':PWMmusic(1568);break;
	ldhx #1568
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L12
L19:
;        case '6':PWMmusic(1760);break;
	ldhx #1760
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L12
L20:
;        case '7':PWMmusic(1976);break;
	ldhx #1976
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
L11:
L12:
L10:
	ais #5
	.dbline 0 ; func end
	rts
;         Period -> 2,X
;       KB_valve -> 4,X
_Lmusic::
	ais #-5
	tsx
;        
;      }
; 
; }
; 
; 
; void Lmusic()
; {    unsigned int  Period;   //PWM周期
;     unsigned char KB_valve;
;     KB_Init();
	jsr _KB_Init
;     KB_valve=KB_Scan();     //扫描键值
	jsr _KB_Scan
	tsx
	sta *__r1
	sta 4,X
;     KB_valve=KB_Def(KB_valve);  //键值转化为定义值 
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta 4,X
;     
; 
;    switch(KB_valve)
	clr ,X
	sta 1,X
	lda ,X
	bne X8
	lda 1,X
	cmp #49
	beq L25
X8:
	lda ,X
	bne X9
	lda 1,X
	cmp #50
	beq L26
X9:
	lda ,X
	bne X10
	lda 1,X
	cmp #51
	beq L27
X10:
	lda ,X
	bne X11
	lda 1,X
	cmp #52
	beq L28
X11:
	lda ,X
	bne X12
	lda 1,X
	cmp #53
	beq L29
X12:
	lda ,X
	bne X13
	lda 1,X
	cmp #54
	beq L30
X13:
	lda ,X
	bne X14
	lda 1,X
	cmp #55
	beq L31
X14:
	bra L22
X15:
;    {  
L25:
;        case '1':PWMmusic(262);break;
	ldhx #262
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L23
L26:
;        case '2':PWMmusic(294);break;
	ldhx #294
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L23
L27:
;        case '3':PWMmusic(330);break;
	ldhx #330
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L23
L28:
;        case '4':PWMmusic(349);break;
	ldhx #349
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L23
L29:
;        case '5':PWMmusic(392);break;
	ldhx #392
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L23
L30:
;        case '6':PWMmusic(440);break;
	ldhx #440
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
	bra L23
L31:
;        case '7':PWMmusic(494);break;
	ldhx #494
	pshx
	pshh
	jsr _PWMmusic
	ais #2
	tsx
L22:
L23:
L21:
	ais #5
	.dbline 0 ; func end
	rts
;           Duty -> 0,X
;         Period -> 2,X
;             HZ -> 6,X
_PWMmusic::
	ais #-4
	tsx
;        
;      }
; 
; }
; 
; 
; 
; 
; void PWMmusic(unsigned int HZ)
; {  
;     unsigned int  Period;   //PWM周期
;     unsigned int  Duty;     //PWM占空比
;    Period=(2457600/64)/HZ;
	clr *__r1
	clr *__r0
	lda 7,X
	sta *__r3
	lda 6,X
	sta *__r2
	clra
	psha
	lda #-106
	psha
	clra
	psha
	psha
	lda *__r3
	psha
	lda *__r2
	psha
	lda *__r1
	psha
	lda *__r0
	psha
	jsr __divmod32s
	ais #4
	pula
	pula
	pula
	sta *__r2
	pula
	sta *__r1
	lda *__r2
	sta 2,X
	lda *__r1
	sta 3,X
;     PWMInit(Period);
	psha
	lda 2,X
	psha
	jsr _PWMInit
	ais #2
	tsx
;    Duty=Period/2;
	lda 3,X
	sta *__r1
	lda 2,X
	sta *__r0
	lsr *__r0
	ror *__r1
	lda *__r0
	sta ,X
	lda *__r1
	sta 1,X
;    
;    
;  
;       T1SC|=(1<<5);        //停止定时器1计数器计数
	bset #5,0x20
;       //[设置PWM脉宽]
;       T1CH0H = (Duty>>8);  //设置高字节
	lda ,X
	sta 0x26
;       T1CH0L = Duty;       //设置低字节
	lda 1,X
	sta 0x27
;       T1SC&=~(1<<5);       //允许定时器1计数器计数     
	bclr #5,0x20
;         Delay_ms(10);      //延时10ms
	lda #10
	psha
	jsr _Delay_ms
	ais #1
	tsx
L32:
	ais #4
	.dbline 0 ; func end
	rts
	.area bss
_Period::
	.blkb 2

⌨️ 快捷键说明

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