找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1476|回复: 3
打印 上一主题 下一主题
收起左侧

LED调光 51单片机程序如何修改为适配PIC单片机?

[复制链接]
跳转到指定楼层
楼主
ID:468294 发表于 2020-3-5 17:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学PIC单片机,对定时器的寄存器不熟悉,想把下面这个51单片机改为PIC(比如16F877A)单片机程序,各位高手给指点下,非常感谢!
代码如下:



//程序名:单片机实验仪配套程序--pwm控制led亮度
//电路简介:1、P0接J1的led共阳端;
//          2、P2.6接J14单键键盘的6,作为增加亮度按钮
//          3、P2.7接J14单键键盘的7,作为减小亮度按钮
//saxmcu  20080518  

#include <reg51.h>

#define out P0
sbit INC=P2^6;     //SW1
sbit DEC=P2^7;     //sw2
//-----------------------------------------------------------------
void Init(void)
{        
        //定时器设置
        TMOD=0x22;  //T1=T0=定时方式2自动重装
        TH1=0;     //脉宽宽度
        TL1=80;
        TH0=55;      //频率调节=0频率最低
        TL0=0;   
      TR0=1;        //先启动T0定时
        ET1=1;
        ET0=1;   
        EA=1;       //总中断开
}
//定时器0中断
//频率********************************************
void Timer0(void) interrupt 1
{
        out=0xff;      //关led
        TL0=0;
        TR1=1;         //打开脉宽定时
}
//定时器1中断
//脉宽********************************************
void Timer1(void) interrupt 3
{
        out=~out;      //开led
        TR1=0;         //脉宽调节结束
}   
//消抖延时
delay()
{
  unsigned int i;
  for(i=0;i<2000;i++);
}
//**********************************
main()
{
    Init();
    while(1)
     {
       INC=1;DEC=1;
       if (INC==0)
          {delay();
           if (INC==0)  
               {
                if (TH1<200) TH1++;
               }
          }
       else if (DEC==0)
          {delay();
           if (DEC==0)  
               {
                if (TH1>0) TH1--;
               }
          }
     }

}

全部资料51hei下载地址:
按键PWM控制led亮度-c (2).rar (15.43 KB, 下载次数: 10)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:89515 发表于 2020-3-5 20:40 来自手机 | 只看该作者
初始化部分,各种单片机都是不一样的,这个你必须自己学习。移植的部分只能是c通用程序
回复

使用道具 举报

板凳
ID:687694 发表于 2020-3-5 23:08 | 只看该作者
软PWM调光,自己码一个得了。
回复

使用道具 举报

地板
ID:401564 发表于 2020-3-6 00:20 | 只看该作者
我不用看就知道了:重新写一个
C8051和PICC在很多地方是不相同的,特别是标准C以外的函数,在定时器,PWM,ADC,几乎是所有的外设功能,包括IO端口的使用,都是不一样的
PIC8位机的IO和8051的是不一样的,它要先设定这个IO是数据输入还是输出,设定为输入了,就没有输出了,相反,设定为输出了就没有数据输入了,是读取不到这个端口的电平了
像IIC这样的,一个IO要读写的话,你就得不断去更改这个端口为输入还是输出........
而且,PIC的堆栈是硬件堆栈,不能递归使用,我不会C,不知道这功能常用与否,反正书上是这么说的
所以,你基本就是重新写一个
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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