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

📄 main.s

📁 摩托罗拉单片机的定时器溢出中断的原代码
💻 S
字号:
	.module main.c
	.area text
;              i -> 0,X
;              j -> 1,X
_main::
	ais #-2
	tsx
; /*-----------------------------------------------------*
; *工 程 名:Timer1.prj                                   *
; *硬件连接:无                                           *
; *程序描述:1.从串口接收表示时间的3字节数据              *
; *         2.利用定时器溢出中断修改时间,并发送新时间    *
; *目    的:学习定时器基本功能                           *
; *---------《嵌入式应用技术基础教程》教学实例----------*/
; //头文件
; #include "GP32C.H"
; #include "SCI.h"          //串行通信子程序头文件
; //有关寄存器位定义
; #define TSTOPBit   5      //定时器计数停止位
; #define TOFBit     7      //定时器溢出标志位
; //函数声明
; extern void SCIInit(void);
; extern void SCISendN(unsigned char n,unsigned char ch[]);
; void Timer1init(void);
; unsigned char time[3];      //存放时、分、秒
; //*====================================================*
; //*[主程序]
; void main()
;   {
;      unsigned char i; 
; 	 unsigned char j;
;  	 asm("SEI");               //关总中断
	SEI
;  	 SCIInit();
	jsr _SCIInit
;  	 Timer1init();             //调定时器1初始化子程序
	jsr _Timer1init
	tsx
;  	 SCC2|=(1<<5);             //令SCC2.5=1,允许接收中断
	bset #5,0x14
; 	 asm("CLI");               //开总中断
	CLI
; 	 //给时分秒赋初始值
; 	 time[0]=0; time[1]=0; time[2]=0; 
	clr *_time
	clr *_time+1
	clr *_time+2
; 	 i=time[2];
	lda *_time+2
	sta ,X
	bra L6
L5:
; 	 while(1)
; 	{
; 	  j=time[2];
	lda *_time+2
	sta 1,X
; 	  if (i!=j)                      //数组已经更新
	lda ,X
	cmp 1,X
	beq L9
; 	     {SCISendN(3,time); i=j;}    //发送新数据
	ldhx #_time
	pshx
	pshh
	lda #3
	psha
	jsr _SCISendN
	ais #3
	tsx
	lda 1,X
	sta ,X
L9:
L6:
	bra L5
X0:
L1:
	ais #2
	.dbline 0 ; func end
	rts
_Timer1init::
;      }
;   }
; /*[内部直接调用子程序存放处]*/
; /*Timer1init:定时器1初始化子程序-----------------------*
; *功能:对定时器1初始化                                  *
; *参数:无                                               *
; *返回:无                                               *
; *-----------------------------------------------------*/
; void Timer1init(void)
;  {
;      //允许溢出中断、不启动计数、分频因子=64
;      T1SC=0b01100110;
	lda #102
	sta 0x20
;      //计数寄存器初值=0x0000
;      T1CNTH=0x00; T1CNTL=0x00;           
	clr 0x21
	clr 0x22
;      //1秒产生1次溢出中断,计数寄存器=1×(2457600/64)=9600
;      T1MODH=0x96; T1MODL=0x00;
	lda #-106
	sta 0x23
	clr 0x24
;      //允许定时器1计数寄存器计数
;      T1SC&=~(1<<TSTOPBit);
	bclr #5,0x20
L11:
	.dbline 0 ; func end
	rts
	.area bss
_time::
	.blkb 3

⌨️ 快捷键说明

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