📄 main.c
字号:
/*-----------------------------------------------------*
*工 程 名:Lcd.prj *
*硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接 *
* 2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接 *
*功能:1.初始显示:"Wait Receiving.." "Soochow 2005.08" *
* 2.等待接收字符,当收到32个字符时显示,重复此功能 *
*----------《嵌入式应用技术基础教程》教学实例---------*/
/*[头文件]*/
#include "SCI.h" //串行通信子程序头文件
#include "GP32C.h" //包含头文件
#include "KB.h" //键盘中断头文件
/*[函数声明]*/
extern void lcdshow(unsigned char *str1,unsigned char *str2);
extern void SCIInit(void);
extern void Akey(void);
void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] ); //闹钟时间日期的显示的初始化
void Timer1init(void);
/*[主程序]*/
#define TSTOPBit 5 //定时器计数停止位
#define TOFBit 7 //定时器溢出标志位
unsigned char time[3], *str1,*str2,alart[2]; //存放时、分、秒
unsigned int data[3]={1,7,2007}; //存放日,月,年
unsigned char clockstr[],datestr[],naozhong=0,KB_valve=0;
void main()
{
unsigned char i;
unsigned char j;
DDRA=0x0ff; //定义pta口为输出
PTA=0x00; // 初值是0
asm("SEI"); //关总中断
KB_Init(); //键盘初始化
SCIInit(); //调串行口初始化子程序
Timer1init(); //调定时器1初始化子程序
SCC2|=(1<<5); //令SCC2.5=1,允许接收中断
INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=1)
asm("CLI"); //开总中断
i=time[0];
while(1)
{
j=time[0];
if (i!=j) //数组已经更新
{ sys_init( time, data, alart );
lcdshow((unsigned char *)datestr,(unsigned char *)clockstr); i=j;} //发送新数据
if(naozhong==1)
{
while(1)
{ naozhong=0;
if(KB_valve=='0')break;
}
}
if( KB_valve== 'A')Akey();
}
}
/*[内部直接调用子程序存放处]*/
/*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);
}
//if(((time[0]==0)&&(time[1]==0))||((time[1]==alart[0])&&(time[2]==alart[0])))PTA=!PTA; //闹钟及整点报时
// else {PTA=0x00;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -