標(biāo)題:
LED調(diào)光 51單片機(jī)程序如何修改為適配PIC單片機(jī)?
[打印本頁(yè)]
作者:
seataozhang
時(shí)間:
2020-3-5 17:20
標(biāo)題:
LED調(diào)光 51單片機(jī)程序如何修改為適配PIC單片機(jī)?
初學(xué)PIC單片機(jī),對(duì)定時(shí)器的寄存器不熟悉,想把下面這個(gè)51單片機(jī)改為PIC(比如16F877A)單片機(jī)程序,各位高手給指點(diǎn)下,非常感謝!
代碼如下:
//程序名:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)儀配套程序--pwm控制led亮度
//電路簡(jiǎn)介:1、P0接J1的led共陽(yáng)端;
// 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)
{
//定時(shí)器設(shè)置
TMOD=0x22; //T1=T0=定時(shí)方式2自動(dòng)重裝
TH1=0; //脈寬寬度
TL1=80;
TH0=55; //頻率調(diào)節(jié)=0頻率最低
TL0=0;
TR0=1; //先啟動(dòng)T0定時(shí)
ET1=1;
ET0=1;
EA=1; //總中斷開(kāi)
}
//定時(shí)器0中斷
//頻率********************************************
void Timer0(void) interrupt 1
{
out=0xff; //關(guān)led
TL0=0;
TR1=1; //打開(kāi)脈寬定時(shí)
}
//定時(shí)器1中斷
//脈寬********************************************
void Timer1(void) interrupt 3
{
out=~out; //開(kāi)led
TR1=0; //脈寬調(diào)節(jié)結(jié)束
}
//消抖延時(shí)
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, 下載次數(shù): 10)
2020-3-5 17:18 上傳
點(diǎn)擊文件名下載附件
作者:
mengzhixinheng
時(shí)間:
2020-3-5 20:40
初始化部分,各種單片機(jī)都是不一樣的,這個(gè)你必須自己學(xué)習(xí)。移植的部分只能是c通用程序
作者:
lovexulu
時(shí)間:
2020-3-5 23:08
軟PWM調(diào)光,自己碼一個(gè)得了。
作者:
Y_G_G
時(shí)間:
2020-3-6 00:20
我不用看就知道了:重新寫一個(gè)
C8051和PICC在很多地方是不相同的,特別是標(biāo)準(zhǔn)C以外的函數(shù),在定時(shí)器,PWM,ADC,幾乎是所有的外設(shè)功能,包括IO端口的使用,都是不一樣的
PIC8位機(jī)的IO和8051的是不一樣的,它要先設(shè)定這個(gè)IO是數(shù)據(jù)輸入還是輸出,設(shè)定為輸入了,就沒(méi)有輸出了,相反,設(shè)定為輸出了就沒(méi)有數(shù)據(jù)輸入了,是讀取不到這個(gè)端口的電平了
像IIC這樣的,一個(gè)IO要讀寫的話,你就得不斷去更改這個(gè)端口為輸入還是輸出........
而且,PIC的堆棧是硬件堆棧,不能遞歸使用,我不會(huì)C,不知道這功能常用與否,反正書上是這么說(shuō)的
所以,你基本就是重新寫一個(gè)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1