?? 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 + -