|
本帖最后由 happy2058 于 2022-2-28 10:16 編輯
請(qǐng)教一下,下面寫法,大循環(huán)跑不動(dòng)原因 用定時(shí)器反轉(zhuǎn)一個(gè)標(biāo)志位,大循環(huán)判斷發(fā)送。8H1K08 24M 開(kāi)了串口1串口2 不在中斷狀態(tài)
我想定時(shí)器多用的情況下,反轉(zhuǎn)不同的標(biāo)志位讓大循環(huán)判斷輸出
void main()
{
P_SW2 |= 0x80; //擴(kuò)展 RAM 區(qū)特殊功能寄存器(XFR)訪問(wèn)控制寄存器
CKSEL = 0x00; //8H默認(rèn)內(nèi)部IRC
CLKDIV =0x00; //不分頻SYSCLK時(shí)鐘
IOsatar(); //IO口模式
Timer0(); //定時(shí)器0 100uS
Uart_Init(); //串口中斷
EA=1;
//WDT_CONTR = 0x24; //?????,?????? 1s
while(1)
{
key_service2(); //串口接收判斷,空閑
Circular_transmission(); //串口隊(duì)列發(fā)送,空閑
TXD_Send_out_uart2(); //直接發(fā)送,空閑
Set_time(); //時(shí)間隊(duì)列發(fā)送,空閑
facecare_start() ; //時(shí)間隊(duì)列發(fā)送,空閑
Microneedle_forward_PWM_out (); //PWM 輸出
}
}
ode unsigned char Microneedle_speed_intensity[11]={0,1,2,3,4,5,6,7,8,9,10};
unsigned char Microneedle_speed_counters_time=0;
unsigned char Microneedle_speed=0;
bit Open_speed_dose_key=0;
//=====================================================================
void Microneedle_forward_PWM_out ()
{
if(Microneedle_speed_counters)
{
Microneedle_speed_counters=~Microneedle_speed_counters;
Microneedle_speed_counters_time++;
if(Microneedle_speed_counters_time<=Microneedle_speed_intensity[Microneedle_speed])
{
Microneedle_PWM_out=1;
}
else
{
Microneedle_PWM_out=0;
}
if(Microneedle_speed_counters_time>=10)
Microneedle_speed_counters_time=0;
}
}
void Timer0() 100US
{
AUXR |= 0x80; //1T
TMOD &= 0xF0; //清零T0的控制位
TL0 = 0xA0; //設(shè)置定時(shí)初始值
TH0 = 0xF6; //設(shè)置定時(shí)初始值置定時(shí)初始值
ET0 = 1; //使能T0中斷
TF0 = 0; //清除TF0標(biāo)志
TR0 = 1; //啟動(dòng)T0
}
//****************************************************************
void TM0_Isr() interrupt 1 //定時(shí)器0中斷
{
//if(UL_INO_CLOK_lock||MIC_lock||RSM_lock)
// {
//facecare_Time_Counter=~facecare_Time_Counter;
// }
if(Open_speed_dose_key)
{
Microneedle_speed_counters=~Microneedle_speed_counters;
}
}
51hei截圖_20220228101354.png (167.76 KB, 下載次數(shù): 39)
下載附件
2022-2-28 10:14 上傳
占空比前后抖動(dòng),如果是寫在定時(shí)器里面是不會(huì)的
oid TM0_Isr() interrupt 1 //定時(shí)器0中斷
{
//if(UL_INO_CLOK_lock||MIC_lock||RSM_lock)
// {
//facecare_Time_Counter=~facecare_Time_Counter;
// }
Microneedle_speed_counters_time++;
if(Microneedle_speed_counters_time<=Microneedle_speed_intensity[Microneedle_speed])
{
Microneedle_PWM_out=1;
}
else
{
Microneedle_PWM_out=0;
}
if(Microneedle_speed_counters_time>=10)
Microneedle_speed_counters_time=0;
}這個(gè)子是不會(huì)有問(wèn)題
|
|