数码之家

 找回密码
 立即注册
搜索
查看: 912|回复: 0

[C51] 小白学51单片机,STC8H PWMA单端输出P1口

[复制链接]
发表于 2024-12-17 16:28:34 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
之所以把P1.0-P1.7单独写出来,是因为想弄清楚每个口对应的寄存器,
代码如下:
  1. #include <stc8h.h>

  2. void pwm_init()
  3. {
  4. //     PWMA_PSCR=0x5dc0;    //频率 24000000/(24000*1000)=1Hz  0x5dc0转十24000
  5.      PWMA_PSCR=0x12c0;    //频率 24000000/(4800*1000)=5Hz  0x12c0转十4800
  6. //     PWMA_PSCR=0x0960;    //频率 24000000/(2400*1000)=10Hz  0x0960转十2400
  7.      PWMA_DTR=0x00;    //死区
  8.     PWMA_ARR=1000;     //自动重装寄存器,控制PWM周期
  9.     PWMA_CCER1=0x00; //先清零 CC2NP CC2NE CC2P CC2E CC1NP CC1NE CC1P CC1E
  10.     PWMA_CCER2=0x00; //关通道    CC4NP CC4NE CC4P CC4E CC3NP CC3NE CC3P CC3E
  11.     PWMA_SR1=0x00;
  12.     PWMA_SR2=0x00;
  13.     PWMA_ENO=0x00;  //关使能输出
  14.     PWMA_PS=0x00;  //高级 PWM 通道输出脚选择
  15.     PWMA_IER=0x00;
  16.      
  17. //P1.0 PWM1P        
  18.     PWMA_CCMR1=0x68; //通道模式配置 0110 1000 PWM模式1 预装载
  19.     PWMA_CCR1=500;     //占空比 500/1000   
  20.     PWMA_CCER1 |=0x01; //配置通道输出使能和极性 CC1E 比较输出使能
  21.     PWMA_ENO |=0x01; //PWM1P p1.0 p2.0 p6.0
  22.     PWMA_PS=0x00;  //高级 PWM 通道输出脚选择位 P1.0

  23. //P1.1    PWM1N   
  24. //    PWMA_CCMR1=0x68; //通道模式配置 0110 0000 PWM模式1 预装载
  25. //    PWMA_CCR1=500;     //占空比 500/1000   
  26. //    PWMA_CCER1 |=0x04; //配置通道输出使能和极性 CC1NE 比较输出使能
  27. //    PWMA_ENO |=0x02; //PWM1N P1.1 P2.1 P6.1
  28. //    PWMA_PS=0x00;  //高级 PWM 通道输出脚选择位 P1.1   

  29. //P1.2    PWM2P   
  30. //    PWMA_CCMR2=0x68; //通道模式配置 0110 0000 PWM模式1 预装载
  31. //    PWMA_CCR2=500;     //占空比 500/1000   
  32. //    PWMA_CCER1 |=0x10; //配置通道输出使能和极性 CC2E 比较输出使能
  33. //    PWMA_ENO |=0x04; //PWM2P P1.2 P2.2 P6.2
  34. //      PWMA_PS=0x00;  //高级 PWM 通道输出脚选择位 P1.2   

  35. //P1.3    PWM2N   
  36. //    PWMA_CCMR2=0x68; //通道模式配置 0110 0000 PWM模式1 预装载
  37. //    PWMA_CCR2=500;     //占空比 500/1000   
  38. //    PWMA_CCER1 |=0x40; //配置通道输出使能和极性 CC2NE 比较输出使能
  39. //    PWMA_ENO |=0x08; //PWM2N P1.3 P2.3 P6.3
  40. //      PWMA_PS=0x00;  //高级 PWM 通道输出脚选择位 P1.3   

  41. //P1.4    PWM3P   
  42. //    PWMA_CCMR3=0x68; //通道模式配置 0110 0000 PWM模式1 预装载
  43. //    PWMA_CCR3=500;     //占空比 500/1000   
  44. //    PWMA_CCER2 |=0x01; //配置通道输出使能和极性 CC3E 比较输出使能
  45. //    PWMA_ENO |=0x10; //PWM3P P1.4 P2.4 P6.4
  46. //      PWMA_PS=0x00;  //高级 PWM 通道输出脚选择位 P1.4   

  47. //P1.5    PWM3N   
  48. //    PWMA_CCMR3=0x68; //通道模式配置 0110 0000 PWM模式1 预装载
  49. //    PWMA_CCR3=500;     //占空比 500/1000   
  50. //    PWMA_CCER2 |=0x04; //配置通道输出使能和极性 CC3NE 比较输出使能
  51. //    PWMA_ENO |=0x20; //PWM3N P1.5 P2.5 P6.5
  52. //      PWMA_PS =0x00;  //高级 PWM 通道输出脚选择位 P1.5   

  53. //P1.6    PWM4P   
  54. //    PWMA_CCMR4=0x68; //通道模式配置 0110 0000 PWM模式1 预装载
  55. //    PWMA_CCR4=500;     //占空比 500/1000   
  56. //    PWMA_CCER2 |=0x10; //配置通道输出使能和极性 CC4E 比较输出使能
  57. //    PWMA_ENO |=0x40; //PWM4P P1.6 P2.6 P6.6 P3.4
  58. //      PWMA_PS=0x00;  //高级 PWM 通道输出脚选择位 P1.6   

  59. //P1.7    PWM4N   
  60. //    PWMA_CCMR4=0x68; //通道模式配置 0110 0000 PWM模式1 预装载
  61. //    PWMA_CCR4=500;     //占空比 500/1000   
  62. //    PWMA_CCER2 |=0x40; //配置通道输出使能和极性 CC4NE 比较输出使能
  63. //    PWMA_ENO |=0x80; //PWM4N P1.7 P2.7 P6.7 P3.3
  64. //      PWMA_PS=0x00;  //高级 PWM 通道输出脚选择位 P1.7        

  65.     PWMA_EGR=0x01;    //产生一次更新事件
  66.     PWMA_BKR=0x80; //使能主输出
  67.     PWMA_CR1 |=0x01; //开始计时
  68. }

  69. // PWMA_ENO
  70. // 0x01 PWM1P p1.0 p2.0 p6.0
  71. // 0x02 PWM1N P1.1 P2.1 P6.1
  72. // 0X04 PWM2P P1.2 P2.2 P6.2
  73. // 0X08 PWM2N P1.3 P2.3 P6.3
  74. // 0X10 PWM3P P1.4 P2.4 P6.4
  75. // 0X20 PWM3N P1.5 P2.5 P6.5
  76. // 0X40 PWM4P P1.6 P2.6 P6.6 P3.4
  77. // 0X80 PWM4N P1.7 P2.7 P6.7 P3.3

  78. // PWMA_PS
  79. // 0x00    p1.0 p1.1 p1.2 p1.3 p1.4 p1.5 p1.6 p1.7
  80. // 0x01 p2.0 p2.1   
  81. // 0x02 p6.0 p6.1   
  82. // 0x04 p2.2 p2.3   
  83. // 0x08 p6.2 p6.3   
  84. // 0x10 p2.4 p2.5   
  85. // 0x20 p6.4 p6.5
  86. // 0x40 p2.6 p2.7
  87. // 0x80 p6.6 p6.7
  88. // 0xc0 p3.4 p3.3

  89. //CCER1
  90. //CC2NP     CC2NE    CC2P      CC2E      CC1NP     CC1NE    CC1P      CC1E  
  91. //OC2负极性  OC2负使能  OC2正极性  OC2正使能  OC1负极性  OC1负使能  OC1正极性  OC1正使能
  92. //CCER2
  93. //CC4NP     CC4NE    CC4P      CC4E      CC3NP     CC3NE    CC3P      CC3E  
  94. //OC4负极性  OC4负使能  OC4正极性  OC4正使能  OC3负极性  OC3负使能  OC3正极性  OC3正使能

  95. //CCMR1 CCR1 PWM1P PWM2N
  96. //CCMR2 CCR2 PWM2P PWM2N
  97. //CCMR3 CCR3 PWM3P PWM3N
  98. //CCMR4 CCR4 PWM4P PWM4N

复制代码









您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-25 12:51 , Processed in 0.140400 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表