?? exam.c
字號:
// *************************************
//Website: http://wch.cn
//Email: tech@wch.cn
//Author: W.ch 2005.4
// *************************************
#include <reg52.h>
#include <intrins.h>
#include "CH452CMD.H" // 定義常用命令碼及外部子程序
sbit LED=P1^0;
void delayms(unsigned char i)
{ unsigned int j;
do{ for(j=0;j!=1000;j++)
{;}
}while(--i);
}
void init()
{ SCON=0x50;
PCON=0x80;
TMOD=0x21;
TH1=0xF3;// ;24MHz晶振, 9600bps,通過串口發送命令,或接收返回的按鍵值。
TR1=1;
RI=0;
TI=0;
// 設置CH452按鍵中斷
// CH452_DOUT=1; // 設置該引腳為輸入方向
IE1=0;
EX1=1;
EA=1;
}
// INT1中斷服務程序
void int1() interrupt 2 //using 1
{
TI=0;
SBUF=CH452_Read(); //將按鍵值通過串口發給PC機檢查
while(!TI);
TI=0;
LED=!LED;
}
main()
{ unsigned char cmd,dat;
unsigned short command;
delayms(50);
init();
SBUF=CH452_Read(); //讀取CH452的版本號,正式應用時不需要。
while(!TI);
TI=0;
CH452_Write(CH452_SYSON2); //兩線制方式,如果SDA用做按鍵中斷輸出,那么命令應該為CH452_SYSON2W(0x04,0x23)
CH452_Write(CH452_BCD); // BCD譯碼,8個數碼管
CH452_Write(CH452_DIG7 | 1);
CH452_Write(CH452_DIG6 | 2);
CH452_Write(CH452_DIG5 | 3);
CH452_Write(CH452_DIG4 | 4);
CH452_Write(CH452_DIG3 | 5);
CH452_Write(CH452_DIG2 | 6);
CH452_Write(CH452_DIG1 | 7);
CH452_Write(CH452_DIG0 | 8); // 顯示字符8
delayms(50);
LED=!LED;
while ( 1 ){ // PC機串口通訊單片機,再控制CH452演示
while(!RI); //等待接收命令數據
cmd=SBUF;
RI=0;
if ( cmd & 0xE0 ) continue; // 無效命令碼
while(!RI); //接收第二個命令數據,未考慮超時
dat=SBUF;
RI=0;
command=cmd;
command= command<<8 | dat;
CH452_Write(command);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -