亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: STC8H8K64 PWM互補輸出3路信號 [打印本頁]

作者: huxingjie9    時間: 2025-11-5 16:45
標(biāo)題: STC8H8K64 PWM互補輸出3路信號
  1. #include "STC8H.h"

  2. // 定義 PWM 引腳(主通道和互補通道)
  3. sbit PWM1_OUT = P3^0;   // 主 PWM1
  4. sbit PWM1B_OUT = P3^1;  // 互補 PWM1
  5. sbit PWM2_OUT = P3^2;   // 主 PWM2
  6. sbit PWM2B_OUT = P3^3;  // 互補 PWM2
  7. sbit PWM3_OUT = P3^4;   // 主 PWM3
  8. sbit PWM3B_OUT = P3^5;  // 互補 PWM3

  9. // PWM 占空比(0~255,8位PWM)
  10. unsigned char PWM1_Duty = 128;  // 50% 占空比
  11. unsigned char PWM2_Duty = 128;
  12. unsigned char PWM3_Duty = 128;

  13. // 死區(qū)時間(單位:us,需根據(jù)實際需求調(diào)整)
  14. #define DEAD_TIME 2   // 2us 死區(qū)

  15. // 延時函數(shù)(微秒級,根據(jù)系統(tǒng)時鐘調(diào)整)
  16. void DelayUs(unsigned int us) {
  17.     while(us--);
  18. }

  19. // 初始化 PCA 模塊為 8 位 PWM 模式
  20. void PCA_Init() {
  21.     PCA_PWM0 = 0x00;  // 通道0:8位PWM,無相位反轉(zhuǎn)
  22.     PCA_PWM1 = 0x00;  // 通道1:8位PWM,無相位反轉(zhuǎn)
  23.     PCA_PWM2 = 0x00;  // 通道2:8位PWM,無相位反轉(zhuǎn)
  24.    
  25.     // 設(shè)置 PCA 時鐘源:系統(tǒng)時鐘/12(假設(shè)系統(tǒng)時鐘11.0592MHz,PWM頻率≈11.0592MHz/(12*256)≈3.58kHz)
  26.     PCA_CLK = 0x02;   // 時鐘源選擇:SYSclk/12
  27.    
  28.     // 設(shè)置初始占空比
  29.     PCA0 = 255 - PWM1_Duty;  // 8位PWM:占空比 = (255 - PCAx)/256
  30.     PCA1 = 255 - PWM2_Duty;
  31.     PCA2 = 255 - PWM3_Duty;
  32.    
  33.     // 使能 PCA 中斷和模塊
  34.     EA = 1;         // 總中斷使能
  35.     EPCA = 1;       // PCA 中斷使能
  36.     PCA_RUN = 1;    // 啟動 PCA 計數(shù)器
  37. }

  38. // PCA 中斷服務(wù)函數(shù)(處理互補輸出和死區(qū))
  39. void PCA_ISR() interrupt 7 {
  40.     // 清除中斷標(biāo)志
  41.     if (CCF0) CCF0 = 0;  // 通道0中斷標(biāo)志
  42.     if (CCF1) CCF1 = 0;  // 通道1中斷標(biāo)志
  43.     if (CCF2) CCF2 = 0;  // 通道2中斷標(biāo)志
  44.    
  45.     // 讀取當(dāng)前主 PWM 狀態(tài)(高/低電平)
  46.     bit pwm1_state = PWM1_OUT;
  47.     bit pwm2_state = PWM2_OUT;
  48.     bit pwm3_state = PWM3_OUT;
  49.    
  50.     // 生成互補 PWM(帶死區(qū))
  51.     // 1. 主 PWM 為高電平時,互補 PWM 先關(guān)斷,延時死區(qū)后再開低電平
  52.     // 2. 主 PWM 為低電平時,互補 PWM 先關(guān)斷,延時死區(qū)后再開高電平
  53.    
  54.     // 處理 PWM1 互補
  55.     PWM1B_OUT = 0;          // 先關(guān)斷互補通道
  56.     DelayUs(DEAD_TIME);     // 死區(qū)延時
  57.     PWM1B_OUT = !pwm1_state;// 互補輸出
  58.    
  59.     // 處理 PWM2 互補
  60.     PWM2B_OUT = 0;
  61.     DelayUs(DEAD_TIME);
  62.     PWM2B_OUT = !pwm2_state;
  63.    
  64.     // 處理 PWM3 互補
  65.     PWM3B_OUT = 0;
  66.     DelayUs(DEAD_TIME);
  67.     PWM3B_OUT = !pwm3_state;
  68. }

  69. void main() {
  70.     PCA_Init();
  71.     while(1) {
  72.         // 可在此動態(tài)調(diào)整占空比(示例:固定占空比)
  73.         // PWM1_Duty = ...;
  74.         // PCA0 = 255 - PWM1_Duty;
  75.     }
  76. }
復(fù)制代碼



作者: cb20cb08    時間: 2026-4-21 20:28
STC8H8K64 沒有PCA 模塊吧,我看手冊上沒有。
作者: cb20cb08    時間: 2026-4-21 20:33
8H8K64U有PCA模塊嗎?我看手冊上沒有。




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1