本帖最后由 xan258 于 2020-11-19 22:28 编辑
#include <SH79F3283.h>
sbit backled=P3^4;
sbit pwmin=P4^2;
unsigned char pwmtime,pwmdata[17];
void Port_init(void)
{
P4CR =0x01;
P3CR= 0x10;
}
void Timer5_init(void)
{
IEN0=0x82; // 开总中断
INSCON = 0x40; //
T5CON = 0x02; //定时器5允许位
TL5 = 0x56;
TH5 = 0xff;
INSCON = 0x00;
}
void timer5(void) interrupt 1
{
INSCON = 0x40;
T5CON = 0x02;
INSCON = 0x00;
pwmtime++;
}
void EX0init(void)
{
IEN0=0x82; //开总中断
IEN1=0x08; //外部中断4允许
IENC=0x04; //外部中断4有8个中断源,第三位允许
EXF0=0x40; //外部中断触发方式位设定 上升沿触发
}
void EX0_ISR (void) interrupt 10
{
static unsigned char i;
static bit startflag;
if (startflag)
{
if(pwmtime<31&&pwmtime>=17)
{i=0;}
pwmdata=pwmtime;
pwmtime=0;
i++;
if(i==17)
{
backled=1;
i=0;
} }
else
{
pwmtime=0;
startflag=1;
}
}
void main(void)
{
Port_init();
Timer5_init();
EX0init();
while(1);
}
c:1.png 仿真出来的时间一直不对。 |