找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1324|回復(fù): 2
收起左側(cè)

各位師傅,有STC8G1K08A單片機(jī)去控制BL8023的參考程序嗎?

[復(fù)制鏈接]
ID:405193 發(fā)表于 2023-10-31 11:52 | 顯示全部樓層 |閱讀模式
各位師傅,有STC8G1K08A 去控制 BL8023 的參考程序嗎?第一次接觸,無(wú)從下手,用P32和P31兩個(gè)IO口去控制,謝謝了。
51hei圖片_20231031114740.png
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-10-31 21:13 | 顯示全部樓層
按邏輯關(guān)系和時(shí)序很好處理。 無(wú)標(biāo)題.jpg

  1. #include <STC8G.H>

  2. sbit GPIO_A = P3^1;
  3. sbit GPIO_B = P3^2;
  4. sbit KEY    = P3^3;

  5. bit ON_OFF=0;
  6. bit flag=0;//標(biāo)志
  7. bit sign=0;
  8. bit start=0;
  9. unsigned int num=0;
  10. unsigned char count=0;

  11. void Timer0_Init(void)                //1毫秒@11.0592MHz
  12. {
  13.         AUXR |= 0x80;                        //定時(shí)器時(shí)鐘1T模式
  14.         TMOD &= 0xF0;                        //設(shè)置定時(shí)器自動(dòng)重裝模式
  15.         TL0 = 0xCD;                                //設(shè)置定時(shí)初始值
  16.         TH0 = 0xD4;                                //設(shè)置定時(shí)初始值
  17.         TF0 = 0;                                //清除TF0標(biāo)志
  18.         TR0 = 1;                                //定時(shí)器0開(kāi)始計(jì)時(shí)
  19.         ET0 = 1;                                //使能T0中斷
  20.         EA  = 1;          //使能總中斷
  21. }

  22. void main(void)
  23. {
  24.         GPIO_A = 0;//上電低電平
  25.         GPIO_B = 0;//上電低電平
  26.         P1M0 = 0x00;
  27.         P1M1 = 0x00;
  28. //        P3M0 = 0x06;//P3.1/P3.2推挽模式
  29.         P3M0 = 0x00;
  30.         P3M1 = 0x00;
  31.         P5M0 = 0x00;
  32.         P5M1 = 0x00;
  33.         Timer0_Init();
  34.         while(1)
  35.         {
  36.                 if(flag)//按鍵掃描周期1ms
  37.                 {
  38.                         flag=0;
  39.                         if(!KEY)
  40.                         {
  41.                                 if(++count>=20 && !sign && !start)//消抖、雙重自鎖,按下的時(shí)間長(zhǎng)短不影響繼電器響應(yīng)。
  42.                                 {
  43.                                         sign=1;
  44.                                         start=1;
  45.                                         ON_OFF=~ON_OFF;
  46.                                 }
  47.                         }
  48.                         else
  49.                         {
  50.                                 sign=0;
  51.                                 count=0;
  52.                         }
  53.                 }
  54.         }
  55. }
  56. void Timer0_Isr(void) interrupt 1
  57. {
  58. //自動(dòng)重裝

  59.         if(start)//開(kāi)始運(yùn)行
  60.         {               
  61.                 if(ON_OFF)//繼電器吸合
  62.                 {
  63.                         GPIO_A = 1;
  64.                         GPIO_B = 0;
  65.                 }
  66.                 else      //繼電器釋放
  67.                 {
  68.                         GPIO_A = 0;
  69.                         GPIO_B = 1;
  70.                 }
  71.                 if(++num>=100)//100ms
  72.                 {
  73.                         num = 0;
  74.                         GPIO_A = 0;
  75.                         GPIO_B = 0;
  76.                         start = 0;//驅(qū)動(dòng)結(jié)束,繼電器保持當(dāng)前狀態(tài)
  77.                 }
  78.         }
  79.         flag=1;//1ms中斷標(biāo)志
  80. }


復(fù)制代碼




回復(fù)

使用道具 舉報(bào)

ID:405193 發(fā)表于 2023-11-1 06:52 | 顯示全部樓層
非常感謝師傅 @ wulin
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表