?? uart.c.bak
字號:
#include<ADI/ADuC834.h> //sfr定義用頭文件
// Delay routine //延時用子程序
//unsigned char data[]={08FE,10F9,0795,09CA};
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^3; //1602的數(shù)據(jù)/指令選擇控制線
sbit rw=P2^4; //1602的讀寫控制線
sbit en=P2^5; //1602的使能控制線
unsigned char DIAC[]="0xAC";
unsigned char DIBC[]="0xBC";
unsigned char DICC[]="0xCC";
unsigned char EICC[]="sbuf=0x02";
unsigned char g_data=0;
unsigned char tcount;
void delay(int a)
{
int length;
for(;a>0;a--)
{
length=10000;
while (length >=0)
length--;
}
}
void lcd_wcom(uchar com) //1602寫命令函數(shù)
{
rs=0; //選擇指令寄存器
rw=0; //選擇寫
P0=com; //把命令字送入P2
delay(5); //延時一小會兒,讓1602準備接收數(shù)據(jù)
en=1; //使能線電平變化,命令送入1602的8位數(shù)據(jù)口
en=0;
}
void lcd_wdat(uchar dat) //1602寫數(shù)據(jù)函數(shù)
{
rs=1; //選擇數(shù)據(jù)寄存器
rw=0; //選擇寫
P0=dat; //把要顯示的數(shù)據(jù)送入P2
delay(5); //延時一小會兒,讓1602準備接收數(shù)據(jù)
en=1; //使能線電平變化,數(shù)據(jù)送入1602的8位數(shù)據(jù)口
en=0;
}
void lcd_init() //1602初始化函數(shù)
{
lcd_wcom(0x38); //8位數(shù)據(jù),雙列,5*7字形
lcd_wcom(0x0F); //開啟顯示屏,關(guān)光標,光標不閃爍
lcd_wcom(0x06); //顯示地址遞增,即寫一個數(shù)據(jù)后,顯示位置右移一位
lcd_wcom(0x01); //清屏
}
void uart_int() interrupt 4
{
unsigned char i;
if(SBUF&0x32==0x32)
{
lcd_wcom(0x80);
//lcd_wdat('L');
for(i=0;i<10;i++)
{
lcd_wdat(EICC[i]);
}
g_data|=SBUF;
}
switch(SBUF)
{
case 0x32:
lcd_wcom(0x80+0x40);
//lcd_wdat('L');
for(i=0;i<5;i++)
{
lcd_wdat(DIAC[i]);
}
//curkey=0;
break;
case 0x33:
lcd_wcom(0x80+0x40);
//lcd_wdat('L');
for(i=0;i<5;i++)
{
lcd_wdat(DIBC[i]);
}
//curkey=0;
break;
default :
lcd_wcom(0x80);
//lcd_wdat('L');
for(i=0;i<5;i++)
{
lcd_wdat(DICC[i]);
}
break;
}
RI=0;
}
void main(void)
{
uchar i;
// ES=1;
// EA=1;
lcd_init();
PLLCON=PLLCON&0xF8; //CPU主頻為12.58MHZ
SCON=SCON|0x50; //UART WORK IN MODE 1
RCAP2H=-1;
RCAP2L=-41; //使用定時器T2,產(chǎn)生9600的波特率,數(shù)據(jù)手冊上有
T2CON=T2CON|0x30; //設(shè)定定 時器T2的工作方式
TR2=1; //開啟定時器T2
for(;;)
{
//g_data=SBUF; //將要發(fā)送到串口的數(shù)據(jù)送入緩沖
for(;;)
{
if(SCON&0x01==0x01) //是否發(fā)送完畢
{
RI=0; //關(guān)串口接收中斷
lcd_wcom(0x80+0x40);
//lcd_wdat('L');
for(i=0;i<5;i++)
{
lcd_wdat(DIBC[i]);
}
if(SBUF)//==0x32)
{
lcd_wcom(0x80);
//lcd_wdat('L');
for(i=0;i<5;i++)
{
lcd_wdat(DIBC[i]);
}
}
}
break; //退出查尋
}
delay(2); //延時
}
// for(;;)
// {
// SBUF=0x32; //將要發(fā)送到串口的數(shù)據(jù)送入緩沖
// for(;;)
// {
// if(SCON&0x02==0x02) //是否發(fā)送完畢
// TI=0; //關(guān)串口接收中斷
// break; //退出查尋
// }
// delay(2); //延時
// }
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -