?? main.c
字號:
#include"CH452CMD.H"
#include"c8051F020.h"
#include"PIN.H"
#include"intrins.h"
#include"math.h"
// Peripheral specific initialization functions,
// Called from the Init_Device() function
void Reset_Sources_Init()
{
WDTCN = 0xDE;
WDTCN = 0xAD;
}
void Port_IO_Init()
{
// P0.0 - Unassigned, Open-Drain, Digital
// P0.1 - Unassigned, Open-Drain, Digital
// P0.2 - Unassigned, Open-Drain, Digital
// P0.3 - Unassigned, Open-Drain, Digital
// P0.4 - Unassigned, Open-Drain, Digital
// P0.5 - Unassigned, Open-Drain, Digital
// P0.6 - Unassigned, Open-Drain, Digital
// P0.7 - Unassigned, Open-Drain, Digital
// P1.0 - Unassigned, Open-Drain, Digital
// P1.1 - Unassigned, Open-Drain, Digital
// P1.2 - Unassigned, Open-Drain, Digital
// P1.3 - Unassigned, Open-Drain, Digital
// P1.4 - Unassigned, Open-Drain, Digital
// P1.5 - Unassigned, Open-Drain, Digital
// P1.6 - Unassigned, Open-Drain, Digital
// P1.7 - Unassigned, Open-Drain, Digital
// P2.0 - Unassigned, Open-Drain, Digital
// P2.1 - Unassigned, Open-Drain, Digital
// P2.2 - Unassigned, Open-Drain, Digital
// P2.3 - Unassigned, Open-Drain, Digital
// P2.4 - Unassigned, Open-Drain, Digital
// P2.5 - Unassigned, Open-Drain, Digital
// P2.6 - Unassigned, Open-Drain, Digital
// P2.7 - Unassigned, Open-Drain, Digital
// P3.0 - Unassigned, Open-Drain, Digital
// P3.1 - Unassigned, Open-Drain, Digital
// P3.2 - Unassigned, Open-Drain, Digital
// P3.3 - Unassigned, Open-Drain, Digital
// P3.4 - Unassigned, Open-Drain, Digital
// P3.5 - Unassigned, Open-Drain, Digital
// P3.6 - Unassigned, Open-Drain, Digital
// P3.7 - Unassigned, Open-Drain, Digital
XBR2 = 0xC0;
}
// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
Reset_Sources_Init();
Port_IO_Init();
}
void main(void)
{
EA=0;
Init_Device();
EA=1;
// CH452_Write(CH452_RESET);
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
CH452_Write(CH452_SYSON2);//打開鍵盤顯示
CH452_Write(CH452_BCD); // BCD譯碼,8個數碼管
CH452_Write(0x601); //設置數碼管0爽書
while(1)
{
CH452_Write(CH452_DIG0|0);
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
}
}
void CH452_Write(unsigned short cmd)
{
unsigned char i;
DISABLE_KEY_INTERRUPT; //禁止鍵盤中斷,防止傳輸過程中被CH452中斷而進入中斷服務程序中再次傳輸
CH452_LOAD_CLR; //命令開始,LOAD=0
CH452_LOAD_D_OUT; // 設置LOAD為輸出方向
CH452_DOUT_D_IN; // 設置DOUT為輸入方向
CH452_DIN_D_OUT; // 設置DIN為輸出方向
CH452_DCLK_D_OUT; // 設置DCLK為輸出方向
for(i=0;i!=12;i++) //送入12位數據,低位在前
{
if (cmd&1) {CH452_DIN_SET;}
else {CH452_DIN_CLR;} // 輸出位數據
// 另外的表達CH452_DIN=cmd&1;
CH452_DCLK_CLR;
cmd>>=1;
DELAY_1US;
DELAY_1US;
CH452_DCLK_SET; //上升沿有效
}
CH452_LOAD=1;//CH452_LOAD_SET; //加載數據,LOAD上升沿
DELAY_1US; //命令數據加載周期不小于6US,CH451不需要該周期
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US; //命令數據加載周期不小于6US,CH451不需要該周期
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US; //命令數據加載周期不小于6US,CH451不需要該周期
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
ENABLE_KEY_INTERRUPT;
}
//*************************************************
//輸入按鍵代碼子程序,從CH452讀取
/*unsigned char CH452_Read( void )
{
unsigned char i;
unsigned char cmd,keycode; //定義命令字,和數據存儲器
DISABLE_KEY_INTERRUPT; //禁止鍵盤中斷,防止傳輸過程中被CH452中斷而進入中斷服務程序中再次傳輸
cmd=0x07; //讀按鍵的命令字
CH452_LOAD_CLR;
for(i=0;i!=4;i++) // 只需要發出高4位,多發也可以,但應該確保最后留下的4位是該命令碼
{
if (cmd&1) {CH452_DIN_SET;}
else {CH452_DIN_CLR;} // 輸出位數據
// CH452_DIN=cmd&1; //送入最低位
CH452_DCLK_CLR;
cmd>>=1; //往右移一位
CH452_DCLK_SET; //產生時鐘上升沿鎖通知CH451輸入位數據
}
CH452_LOAD_SET; //產生加載上升沿通知CH451處理命令數據
keycode=0; //清除keycode
for(i=0;i!=7;i++)
{
keycode<<=1; //數據移入keycode,高位在前,低位在后
if (CH452_DOUT) keycode++; //從高到低讀入451的數據
// keycode|=CH452_DOUT;
CH452_DCLK_CLR; //產生時鐘下升沿通知CH451輸出下一位
CH452_DCLK_SET;
}
CLEAR_KEY_INTER_FLAG; //清中斷標志
ENABLE_KEY_INTERRUPT;
return(keycode); //反回鍵值
} */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -