📄 test.bak
字号:
#define uchar unsigned char
#define uint unsigned int
#pragma sfr
#pragma asm
#pragma di
#pragma ei
#pragma NOP
#pragma interrupt INTTMH1 vect_INTTMH1
#pragma section @@DATA DATASEG AT 0xFE00
#pragma section @@CODE CODESEG AT 0xa0
#pragma section @@CNST OPT AT 80H
const char OPTION = 0B10010101; /* RESET pin is used as is I/O input*/
/* internal oscillate */
/* Ring osc can't be stopped */
#pragma section @@CNST OPT1 AT 85H
#define LEDRdy P4.0 //准备好灯
uchar ucR_TimeZero;
uchar ucR_ADTemp;
uchar ucR_ADMin;
uchar ucR_ADMax;
uchar ucR_ADCount;
uchar ucR_ADResult;
uint ucR_Uint25ms;
uint uiR_ADTempData;
void Test(void);
noauto void SystemInit(void);
noauto void Adc_Convert(void);
void main(void)
{
DI( );
// __asm("MOVW AX,#0FE20H");
// __asm("MOVW SP,AX" );
WDTM = 0x6F; //start watchdog timer with MAX time
WDTE = 0xAC;
SystemInit();
EI();
while(1)
{
WDTE = 0xAC;
//Adc_Convert();
Test();
}
}
norec void init_CPU(void)
{
PCC = 0x00;
PPCC = 0x00; //set CPU clock to fx
LSRSTOP = 0; //internal Low clock run
IF0 = 0x00;
MK0 = 0xFF;
LVIM = 0x00;
PM2.0 = 0;
PM2.1 = 0;
PM4 = 0;
//PMC2.0 = 1;
//PM2.0 = 1; //A/D
P4.0 = 0;
PM4.0 = 0;
}
norec void init_TMH1(void)
{
TMIFH1 = 0; /* set interrupt request flag */
TMMKH1 = 1; /* disable timerH1 interrupt */
TMHE1 = 0; /* stop timerH1 */
TMHMD1 = 0x50; /* set input clock to Fx / 2^7 ,512us*/
CMP01 = 0x05; /* set interval time to 2.5ms */
TMIFH1 = 0; /* clear interrupt request flag */
TMMKH1 = 0; /* enable timerH1 interrupt */
TMHE1 = 1;
}
norec void init_AD(void)
{
ucR_ADMin = 0xFF;
ucR_ADMax = 0x00;
ADIF = 0;
ADCS = 0; //AD stop
ADCE = 1; //enable voltage generator
ADM = 0x38; //0x10=28us,stop
ADCS = 1; //start conversion
}
norec void init_LVI( void )
{
uint uiR_LVICout;
LVIS = 0x09; //compare with 2.85V
LVION = 1; //enable LVI operation
for(uiR_LVICout=0; uiR_LVICout<700; uiR_LVICout++) NOP(); //wait 0.2 ms
if(LVIF)
for(uiR_LVICout=0; uiR_LVICout<700; uiR_LVICout++) NOP();
LVIMD = 1; //Reset mode
}
noauto void SystemInit(void)
{
init_CPU();
init_TMH1();
//init_AD();
init_LVI();
}
void Test(void)
{
if(ucR_TimeZero/*&&(ucR_ADResult>=0x45)*/)
{
ucR_TimeZero=0;
LEDRdy ^= 1;
}
}
__interrupt void vect_INTTMH1(void)
{
ucR_Uint25ms ++;
if(ucR_Uint25ms >= 100)
{
ucR_Uint25ms = 0;
ucR_TimeZero = 6;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -