📄 main.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 + -