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

📄 main.c

📁 利用定时器溢出中断修改时间,并发送新时间
💻 C
字号:
/*-----------------------------------------------------*
*工 程 名: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");               //关总中断
 	 SCIInit();
 	 Timer1init();             //调定时器1初始化子程序
 	 SCC2|=(1<<5);             //令SCC2.5=1,允许接收中断
	 asm("CLI");               //开总中断
	 //给时分秒赋初始值
	 time[0]=0; time[1]=0; time[2]=0; 
	 i=time[2];
	 while(1)
	{
	  j=time[2];
	  if (i!=j)                      //数组已经更新
	     {SCISendN(3,time); i=j;}    //发送新数据
     }
  }
/*[内部直接调用子程序存放处]*/
/*Timer1init:定时器1初始化子程序-----------------------*
*功能:对定时器1初始化                                  *
*参数:无                                               *
*返回:无                                               *
*-----------------------------------------------------*/
void Timer1init(void)
 {
     //允许溢出中断、不启动计数、分频因子=64
     T1SC=0b01100110;
     //计数寄存器初值=0x0000
     T1CNTH=0x00; T1CNTL=0x00;           
     //1秒产生1次溢出中断,计数寄存器=1×(2457600/64)=9600
     T1MODH=0x96; T1MODL=0x00;
     //允许定时器1计数寄存器计数
     T1SC&=~(1<<TSTOPBit);
 }

⌨️ 快捷键说明

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