|
本帖最后由 hww22 于 2024-1-11 08:19 編輯
#include "STC8.H"
typedef unsigned int u16;
u16 tt; //80 點(diǎn)計(jì)算,為1個(gè)周期 20ms,,,, 0.25mS X 80 =20ms;即是每點(diǎn) 0.25MS
typedef unsigned char u8;
u8 dg,df;
u8 a;b;
void Timer0_Isr(void) interrupt 1
{
if(df<11) //軟啟信號(hào)對(duì),df==11退出軟啟動(dòng)。
{
dg=0-df;
if(tt==79)
df++;
if(dg<=1)
dg=0;
}
if(tt==0||tt==2||tt==5||tt==34||tt==37||tt==39||tt==40||tt==42||tt==45||tt==74||tt==77||tt==79||tt==80) { P33=0;
P55=0;
} /////////////////////////////
if(tt==1||tt==3||tt==4||tt==35||tt==36||tt==38)
{ P33=0;
// P54=1;
P55=1;
}
a=6+dg;
b=33-dg;
if(tt>=a&&tt<=b)
{ P33=0;
// P54=1;
P55=1;
}
if(tt==41||tt==43||tt==44||tt==75||tt==76||tt==78)
{ P33=1;
// P54=1;
P55= 0;
}
a=46+dg;
b=73-dg;
if(tt>=a&&tt<=b)
{ P33=1;
// P54=1;
P55=0;
}
tt++;
if(tt==80) //一個(gè)周期完成
tt=0;
}
void Timer0_Init(void) //250微秒@24.000MHz
{
AUXR &= 0x7F; //定時(shí)器時(shí)鐘12T模式
TMOD &= 0xF0; //設(shè)置定時(shí)器模式
TL0 = 0x0C; //設(shè)置定時(shí)初始值
TH0 = 0xFE; //設(shè)置定時(shí)初始值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 1; //定時(shí)器0開(kāi)始計(jì)時(shí)
ET0 = 1; //使能定時(shí)器0中斷
}
void main(void)
{ P3M0 |= 0x09; P3M1 &= ~0x09; //p3.3 p3.0 推挽輸出
// P3M0 = 0x00; P3M1 = 0x00; // 準(zhǔn)雙向口
// P5M0 &= ~0x30; P5M1 &= ~0x30; //P54, P55, 準(zhǔn)雙向口
// p3.1 準(zhǔn)雙向口,用于過(guò)流 p3.3 p3.0
// P5M0 |= 0x30; P5M1 &= ~0x30; //P54, P55, 推挽輸出
P5M0 = (P5M0 & ~0x10) | 0x20; P5M1 &= ~0x30; // P55推挽輸出,P54準(zhǔn)雙向口
dg=0;
df=0;
P31=0;
P30=0;
P33=0;
P55=0;
tt=0;
Timer0_Init(); //1 毫秒秒@24.000MHz
EA = 1; //允許全局中斷
while (1)
{ ;
if( P54==1) //過(guò)流關(guān)閉中斷。
{ EA = 0; // 關(guān)定時(shí)。
ET0 = 0;
P33=0;
P55=0;
tt=0;
dg=0;
df=0;
P54=0;
Timer0_Init(); //1 毫秒秒@24.000MHz
EA = 1;
}
}
}
這個(gè)才對(duì)。
|
|