利用串口来设置时间并显示在lcd上;设置时间时,利用串口发送一串字符串,例如12-13-12
uart.c
#include "myhead.h"
xdata
unsigned char ch[
10] = {
0};
xdata
unsigned char flag =
0;
void uart_init(
void)
{
SCON =
0x50;
TMOD |=
0x20;
TH1 =
0xfd;
TR1 =
1;
EA =
1;
ES =
1;
}
void uart_send_byte(
unsigned char byte);
void uart_send_str(
unsigned char *str);
void uart_isr() interrupt
4
{
static unsigned char i =
0;
if(RI)
{
ES =
0;
ch[i] = SBUF;
i++;
if(
9 == i)
{ ch[i] =
'\0';
i =
0;
flag =
1;
}
RI =
0;
ES =
1;
}
}
void uart_send_byte(
unsigned char byte)
{
SBUF = byte;
while(!TI);
TI =
0;
}
void uart_send_str(
unsigned char *s)
{
while(*s !=
'\0')
{
uart_send_byte(*s);
s++;
}
}
void uart()
{
xdata
unsigned char flag1 =
1;
xdata
unsigned char key;
time0_init();
uart_init();
while(flag1)
{
if(flag)
{
tempdata[
0] = segdata[ch[
1] -
'0'];
tempdata[
1] = segdata[ch[
2] -
'0'];
tempdata[
2] =
0x40;
tempdata[
3] = segdata[ch[
4] -
'0'];
tempdata[
4] = segdata[ch[
5] -
'0'];
tempdata[
5] =
0x3f;
tempdata[
6] = segdata[ch[
7] -
'0'];
tempdata[
7] = segdata[ch[
8] -
'0'];
hour = (ch[
1] -
'0') *
10 +(ch[
2] -
'0');
min = (ch[
4] -
'0') *
10 +(ch[
5] -
'0');
sec = (ch[
7] -
'0') *
10 +(ch[
8] -
'0');
uart_send_str(ch);
flag =
0;
}
key = key_scan();
if(
0xe7 == key)
{
lcd_over();
flag1 =
0;
ES =
0;
PORT =
0xff;
}
lcd_dis_time();
}
}
将程序下载到板子上时一定要关闭串口工具。
uart.h
#ifndef _UART_H
#define _UART_H
extern void uart_init(
void);
extern void uart_isr();
extern void uart_send_byte(unsigned
char byte);
extern void uart_send_str(unsigned
char *str);
extern void uart();
#endif
转载请注明原文地址: https://ju.6miu.com/read-1125645.html