📄 main.c
字号:
/*-----------------------------------------------------*
*工 程 名:TG12864E02.prj *
*硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接 *
* 2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接 *
* 功 能:初始时显示:"苏州大学 " *
* "单片机实验室 " *
* "http://sumcu.s " *
* "uda.edu.cn " *
*-----------------------------------------------------*/
/*[头文件]*/
#include "GP32C.h" //映像寄存器地址头文件
#include "lcd.h" //Lcd头文件
#include "SCI.h" //SCI头文件
//有关定时器寄存器位定义
#define TSTOPBit 5 //定时器计数停止位
//定时器初始化函数声明
void Timer1init(void);
//SCI初始化
extern void SCIInit(void);
//全局变量声明
unsigned char FLine=0; //得到焦点的行号
//[外部定义64个字节的Lcd显示缓冲区]
unsigned char LcdShowBuff[64]="苏州大学 "
"单片机实验室 "
"http://sumcu.s "
"uda.edu.cn ";
//*====================================================*
/*[主函数]*/
void main()
{
unsigned char *RF; //接收标志
unsigned char LN; //行号标志
asm("SEI"); //关总中断
Timer1init(); //调定时器1初始化子程序
Lcdinit(); //Lcd初始化
SCIInit(); //SCI初始化
asm("CLI"); //开总中断
//[主循环]
//循环等待接收
while(1)
{
SCISend1(86);
if(SCIRe1(RF)!=56) continue;
LN=SCIRe1(RF);
if(LN==1) //将接收到的数据放在第一行显示缓冲区
SCIReN(16,LcdShowBuff);
else if(LN==2)//将接收到的数据放在第二行显示缓冲区
SCIReN(16,LcdShowBuff+16);
else if(LN==3)//将接收到的数据放在第三行显示缓冲区
SCIReN(16,LcdShowBuff+32);
else if(LN==4)//将接收到的数据放在第四行显示缓冲区
SCIReN(16,LcdShowBuff+48);
}
}
/*[内部直接调用子程序存放处]*/
/*Timer1init:定时器1初始化子程序-----------------------*
*功能:对定时器1初始化 *
*参数:无 *
*返回:无 *
*-----------------------------------------------------*/
void Timer1init(void)
{
//允许溢出中断、不启动计数、分频因子=64
T1SC=0b01100110;
//计数寄存器初值=0x0000
T1CNTH=0x00; T1CNTL=0x00;
//1/2秒产生1次溢出中断
//计数寄存器=1/2×(2457600/64)=1200
T1MODH=0x12; T1MODL=0x00;
//允许定时器1计数寄存器计数
T1SC&=~(1<<TSTOPBit);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -