永发信息网

C8051F120单片机产生PWM

答案:3  悬赏:80  手机版
解决时间 2021-12-03 18:15
C8051F120单片机产生PWM
最佳答案
1不用看门狗要使用软件禁止,WDTCN = 0xde;WDTCN = 0xad;不然单片机会一直复位,这个不知道你弄过没有。
2CEX0_Compare_Value = 65536 - 65536;这个你什么意思?想产生0%占空比的PWM?16位PWM不能产生0%占空比的PWM,想用可以通过禁用PWM实现,这个芯片资料中提到过。把CEX0_Compare_Value改成10000先试试.追问1看门狗在另一个模块关了
2这个问题,昨天我也试了,不行追答PCA0CN |= 0x40;允许PCA0运行
全部回答

参考一下这个仿真实例,仿真试试。

追问我想用C8051F的PCA来实现追答程序一样的,端口可以根据你需要的 修改。
C8051F120单片机产生PWM程序为:
  olf2010-6-21 22:421#
  //PWM输出脚P0.3
  //-----------------------------------------------------------------------------
  // Includes
  //-----------------------------------------------------------------------------
  #include // SFR declarations
  #include
  #include
  //-----------------------------------------------------------------------------
  // Function PROTOTYPES
  //-----------------------------------------------------------------------------
  void PORT_Init (void);
  void PCA_Init (void);
  void PCA_ISR (void);
  void SYSCLK_Init (void);
  //-----------------------------------------------------------------------------
  // MAIN Routine
  //-----------------------------------------------------------------------------
  void main (void)
  {
  unsigned long b;
  WDTCN = 0xde; // disable watchdog timer
  WDTCN = 0xad;
  SYSCLK_Init ();
  PORT_Init ();
  PCA_Init ();
  EIE1= 0x08;
  EA=1;
  PCA0CPH0=0x20;
  while (1)
  { }
  }
  //-----------------------------------------------------------------------------
  // Initialization Subroutines
  //-----------------------------------------------------------------------------
  //-----------------------------------------------------------------------------
  // PORT_Init
  //-----------------------------------------------------------------------------
  void PORT_Init (void)
  {
  XBR0 = 0x11; // XBAR0: Initial Reset Value
  XBR1 = 0x00; // XBAR1: Initial Reset Value
  XBR2 = 0x40; // XBAR2: Initial Reset Value
  // Port configuration (1 = Push Pull Output)
  PRT0CF = 0x08; // Output configuration for P0
  PRT1CF = 0x00; // Output configuration for P1
  PRT2CF = 0x00; // Output configuration for P2
  PRT3CF = 0x00; // Output configuration for P3
  }
  //-----------------------------------------------------------------------------
  // SYSCLK_Init
  //-----------------------------------------------------------------------------
  void SYSCLK_Init (void)
  {
  unsigned int i; // delaynms counter
  OSCXCN = 0x67; // start external oscillator with
  for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)
  while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
  OSCICN = 0x88; // select external oscillator as SYSCLK
  }
  //-----------------------------------------------------------------------------
  // PCA_Init
  //-----------------------------------------------------------------------------
  void PCA_Init (void)
  {
  // PCA0CPM0 = 0x42; // PCA Capture/Compare Register 0
  PCA0CN = 0x40;
  PCA0CPM1 = 0x42;
  PCA0CPL0 = 0x00;
  PCA0CPH0 = 0x00;
  // PCA0MD &= 0x40;
  PCA0MD = 0x01;
  }
  //-----------------------------------------------------------------------------
  // PCA_ISR
  //-----------------------------------------------------------------------------
  void PCA_ISR (void) interrupt 9
  { unsigned char a ;
  bit PWM_PAC;
  CF = 0;
  if(PWM_PAC==0) //占空比由0 >>0xfe
  {
  PCA0CPH1=a;
  a++;
  if(a==0xfe){PWM_PAC=1;}
  }
  else //占空比由0xfe >>0
  {
  PCA0CPH1=a;
  a--;
  if(a==0){PWM_PAC=0;}
  }
  }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
豆芽机做豆芽需要多长时间?
56÷×=5解方程
在校大学生应聘安永填什么英语学位
支付保被骗400块能立案吗?
柯南219集,名侦探的聚会,凶手假装被杀,是
首饰蜡镶如何防止掉石头?
老款奥拓后轮内锅多少钱
卫生间排水管安装是先安支管还是先安干管
讯的形近字
只要有隐性斜视就不能当飞行员?
吉利帝豪GS选择1.3t还是选择1.8l的?
万联能源集团(原连云港燃料集团)怎样?工资
为什么要对电路板进行测试 电路板测试的背景
导弹预警卫星的形状和功能
贺兰县农业机械安全监理站怎么去啊,有知道地
推荐资讯
杭州和兰州打电话订火车票的电话区号是什么啊
东莞柏能电子厂考试题答案有谁知道啊?
梅西路在什么地方啊,我要过去处理事情
描写快马在道路上奔驰的句子
手机背部摄像头位置耳朵贴在上面能听见里面有
求性任嘉辉相识的名字
从湖州快递4.2斤的东西到湖北武汉多少钱
岂敢盘桓哪个是古今异义
现在新疆的红旗拉普哨卡是唐朝时期的哪个地方
广州商学院和中山大学新华学院东莞校区哪个好
一个给人阳光的,实际上身上有很多悲伤,情绪
平原县公安局龙门派出所在什么地方啊,我要处
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?