📄 main.c
字号:
#include <C8051F000.h>
#include <intrins.h>
#include "ch452.h"
#include "ch452cmd.h" //常用命令头文件
#include "pin.h"
/******************初始化子程序****************/
/*时钟初始化*/
void SYSCLK_Init (void)
{
//晶振配置,采用内部晶振,默认为16MHz,八分频为2MHz
//允许时钟丢失监测器
OSCICN = 0x94;
OSCXCN = 0x00;
//外部晶振
// int i; // delay counter
// OSCXCN = 0x67; // start external oscillator with
// 18.432MHz crystal
// for (i=0; i < 256; i++) ; // Wait for osc. to start up
// while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
// OSCICN = 0x88; // select external oscillator as SYSCLK
// source and enable missing clock
// detector
}
/*端口初始化*/
void PORT_Init (void)
{
//交叉开关使能,但没有进行外围设备配置
XBR0 = 0x00;
XBR1 = 0x00;
XBR2 = 0x40;
//均配置为开漏输出
PRT0CF |= 0x00;
PRT1CF |= 0x00;
PRT2CF |= 0x00;
PRT3CF |= 0x00;
}
void delayms(unsigned int i) //1ms
{ unsigned int j;
do{ for(j=0;j!=200;j++)
{;}
}while(--i);
}
main()
{
unsigned char cmd,dat;
// unsigned short command;
unsigned char counter;
WDTCN = 0xDE; //禁止看门狗
WDTCN = 0xAD;
SYSCLK_Init(); //初始化时钟
PORT_Init(); //初始化端口
delayms(10);
// dat=CH452_Read(); //读取CH452的版本号,正式应用时不需要。
CH452_Write(CH452_SYSON2); //两线制方式,如果SDA用做按键中断输出,那么命令应该为(0x04,0x23)
CH452_Write(CH452_BCD); // BCD译码,8个数码管
CH452_Write(CH452_DIG0 | 0); // 显示字符8
CH452_Write(CH452_DIG1 | 2);
CH452_Write(CH452_DIG2 | 8);
CH452_Write(CH452_DIG3 | 8);
CH452_Write(CH452_DIG4 | 8);
CH452_Write(CH452_DIG5 | 8);
CH452_Write(CH452_DIG6 | 8);
// CH452_Write(CH452_DIG7 | 0x1a);
delayms(50);
// LED=!LED;
while ( 1 ){ // PC机串口通讯单片机,再控制CH452演示
// while(CH452_DOUT);
delayms(20);
// CH452_Write(CH452_GET_KEY);
dat=CH452_Read();
delayms(20);
// for(counter=0;counter<9;counter++)
// {
// CH452_Write(CH452_DIG4 | counter);
// delayms(10);
// }
// PCON |=0x01;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -