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

📄 main.s

📁 要用到开发工具SD-H08
💻 S
字号:
	.module main.c
	.area text
;             va -> 0,X
;             ko -> 2,X
_main::
	ais #-3
	tsx
; /*-----------------------------------------------------*
; *工 程 名:	                                
; *硬件连接:                                
; *程序描述: SD-HC08 模板生成                            
; */
; /*[头文件]*/
; #include "GP32C.h"                //映像寄存器地址头文件
; #include "KB.h"
; /*[主函数]*/
; void main()
;   { unsigned int va;
;   	unsigned char ko;
;   	KB_Init();
	jsr _KB_Init
	tsx
	bra L3
L2:
;   	while(1)
;   	{
L5:
;     	do
;      		{
;      		ko=KB_Scan();
	jsr _KB_Scan
	tsx
	sta *__r1
	sta 2,X
L6:
;      		}while(ko==0xffff);//查找有没有按键按下,有就跳出,
	lda 2,X
	cmp #-1
	beq L5
;      		va=KB_Def(ko);
	psha
	jsr _KB_Def
	ais #1
	tsx
	lda *__r0
	sta ,X
	lda *__r1
	sta 1,X
;      		Timer(va);
	psha
	lda ,X
	psha
	jsr _Timer
	ais #2
	tsx
L8:
;     	do
;     		{ko=KB_Scan();
	jsr _KB_Scan
	tsx
	sta *__r1
	sta 2,X
L9:
	lda 2,X
	cmp #-1
	bne L8
	bset #5,0x20
	lda #-1
	sta 0x7
	lda 0x3
	ora #48
	sta 0x3
L3:
	bra L2
X0:
L1:
	ais #3
	.dbline 0 ; func end
	rts
;         frql_w -> 0,X
;         frqh_w -> 1,X
;          frq_c -> 2,X
;            frq -> 6,X
_Timer::
	ais #-4
	tsx
;     		}while(ko!=0xffff);//查询按键有没有放开,当放开就停止
;     	T1SC|=1<<TSTOPBit;//关记数器,第五位.
;     	DDRD=0xff;
;     	PTD|=0x30;//使数据口为I/o模式,输出为低电平(为1)
;   	}
;   }
; /*定时器初始化设计*/
; void Timer(unsigned int frq)
; {	unsigned int frq_c;
; 	unsigned char frqh_w,frql_w;
; 	frq_c=38400/frq;//得到频率值所对应的周期
	lda #0
	sta *__rlo
	lda #-106
	sta *__rhi
	lda 7,X
	psha
	lda 6,X
	psha
	jsr __divmod16u
	ais #2
	lda *__rhi
	sta 2,X
	lda *__rlo
	sta 3,X
; 	frq=((frq_c*2)>>8)&0x00ff;//得到高八位的数值
	lsla
	lda 2,X
	rola
	sta 7,X
	clra
	sta 6,X
; 	frqh_w=frq;
	lda 7,X
	sta 1,X
; 	frq=((frq_c*2)&0x00ff);//得到相应的低八位
	lda 3,X
	lsla
	sta *__r1
	lda 2,X
	rola
	lda *__r1
	sta 7,X
	clra
	sta 6,X
; 	frql_w=frq;
	lda 7,X
	sta ,X
;      //禁止溢出中断、不启动计数、分频因子=64
;      T1SC=0b00100110;//分频系数为64,不容许中断,定时器停止
	lda #38
	sta 0x20
;      T1SC0=0b00010110;	 //0b00010110设置通道0输出捕捉模式,
	lda #22
	sta 0x25
; 	                    //不允许比较中断,输出电平反转
;      //计数寄存器初值=0x0000
;      T1CNTH=0x00; T1CNTL=0x00;
	clr 0x21
	clr 0x22
;      //对应的数值产生对应的频率值,在通道寄存器溢出时翻转;
;      T1CH0H=frqh_w; T1CH0H=frql_w;
	lda 1,X
	sta 0x26
	lda ,X
	sta 0x26
;      //允许定时器1计数寄存器计数
;      T1SC&=~(1<<TSTOPBit);
	bclr #5,0x20
L11:
	ais #4
	.dbline 0 ; func end
	rts

⌨️ 快捷键说明

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