|
用的是UPD78F9202芯片,P2和P4口接LED,1秒钟闪烁一次,为什么P2口的LED闪烁,而P4口的不闪?
/*uPD78F9202*/
#pragma sfr
#pragma DI
#pragma EI
#pragma NOP
#pragma interrupt INTTMH1 int_TMH1
#pragma section @@CNST OPT AT 80H
const char OPTION=0b10010110; /* reset脚设定为输入口,内部8m高速振荡*/
#define OFF 0
#define ON 1
#define _5MS 5
#define _500MS 100
bit bSendEn;
unsigned char n5msCount;
unsigned char n500msCount;
unsigned char nOutData;
unsigned char nP4Buff;
void int_TMH1(void);
void hard_ini(void);
/*********************************************************/
void hard_ini(void)
{
PPCC=0b00000001; /*Fcpu=4M,Fxp=4M,(指令周期2/4=0.5us)*/
PCC=0b00000000; /**/
WDTM=0b01111000; /*看门狗关,0b01111000*/
/*IO初始化*/
PU2=0;
PU3=0;
PU4=0;
PM2=0b11110000; /*p20-p23输出*/
PMC2=0b00000000; /*p20-p23为端口/复用模式,非ADC模式*/
PM3=0b11111011; /*p34输入p32输出*/
PM4=0b11110110; /*p43 p40输出*/
P4=0b00000000;
nP4Buff=0;
/*8位定时器H1初始化*/
TMHMD1=0b00100000; /*H1模式设定:计数时钟=Fxp/16=4/16=0.25M=4us*/
CMP01=249; /*比较寄存器01设定:(249+1)*4us=1ms产生一次中断*/
TMMKH1=0; /*CMP01中断允许*//**/
TMHE1=1; /*启动定时器工作*//**/
}
/****************************************************/
void int_TMH1(void) //H1中断,1ms一次
{
TMIFH1=0;
if (!(n5msCount-=1))
{
n5msCount=_5MS;
if (!(n500msCount-=1))
{
n500msCount=_500MS;
P2.1=!P2.1;
P2.0=!P2.0;
P4.3=!P4.3;
P2.3=!P2.3;
P4.0=!P4.0;
}
}
}
void main()
{
DI();
hard_ini();
n5msCount=_5MS;
n500msCount=_500MS;
EI();
while(1)
{
NOP();
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|