📄 driver.c
字号:
#include <config.h>
#include <head.h>
#include <main.h>
#include "driver.h"
#include "LCD_1621.h"
#define TIMERS 2
Uchar idata show_buf[19];
Ulong idata systime=0;
Uint idata TimerTime[TIMERS],TimerReloadTime[TIMERS];
Uchar idata beeptime;
Uchar idata lcdfbit;
void ComInit()
{
Uart_Init(9600,0);
}
/**************************************************************************
* 函数原型: void systimeinit()
* 功 能: 系统时间初始化
**************************************************************************/
void systimeinit()
{
TMOD&=0x0f;
TMOD|=0X10;
TL1=(0x10000-(SYSCLK/1200))&0x00ff;
TH1=(0x10000-(SYSCLK/1200))>>8;
TR1=1;
ET1=1;
EA=1;
}
/**************************************************************************
* 函数原型: void T1_int(void)
* 功 能: 定时器1中断,进行与系统时间相关的操作,包括声音驱动
**************************************************************************/
void T1_int(void) interrupt 3
{
Uchar i;
TL1=(0x10000-(SYSCLK/1200))&0x00ff;
TH1=(0x10000-(SYSCLK/1200))>>8;
systime+=1;
PostMessageOne(M_TIMETICK,1);
for(i=0;i<TIMERS;i++)
if(TimerTime[i])
{
if(--TimerTime[i]==0)
{PostMessage(M_FUNDELAYOK,i);TimerTime[i]=TimerReloadTime[i];}
}
}
/**************************************************************************
* 函数原型: void beep(Uchar beept)
* 功 能: 声音驱动函数
* 入 口: 发声时间长度
*************************************************************************/
void beep(Uchar beept)
{
beeptime=beept/10;
if(beeptime)
beep_set(0);
}
Ulong getsystime()
{
return systime;
}
void SetTimer(Uint delaytime,Uchar timer)
{
TimerReloadTime[timer]=TimerTime[timer]=delaytime;
}
void KillTimer(Uchar timer)
{
TimerReloadTime[timer]=TimerTime[timer]=0;
}
/**************************************************************************
* 函数原型: void void lprintf(const char *,...)
* 功 能: 显示数据函数
**************************************************************************/
void aprintf(unsigned char sendmode,const char *schar,...)
{
Uchar idata i;
va_list vat;
va_start(vat,schar);
vsprintf(show_buf,schar,vat);
va_end(vat);
for(i=0;i<13;i++)
{
if(show_buf[i]==0)
for(;i<13;i++)
show_buf[i]=' ';
}
i=(sendmode&0xf0)>>4;
if(i==0x0)
lcd_writenum(show_buf);
else if(i==0x1)
lcd_writechar(show_buf);
else if(i==0x2) lcd_writechar(show_buf+lcd_writenum(show_buf));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -