PIC单片机 c语言编程

Python018

PIC单片机 c语言编程,第1张

以DIP-40的PIC16F877A来举例 灯闪动频率为1秒

void Delay_Ms(unsigned char n)

void main(void)

{

while(1)

{

RA0 = 1//2脚输出

//11脚是供电

RD2 = 1//21脚输出

trisA = 0x04//4脚RA2作为输入

if(RA2 == 0) //如果4脚为低电平

{

//执行代码

}

else //如果4脚为高电平

{

//执行代码

}

Delay_Ms(1000)//延时1秒

RA0 = 0//2脚输出

//11脚是供电

RD2 = 0//21脚输出

Delay_Ms(1000)//延时1秒

}

}

void Delay_Ms(unsigned char n) //延时程序

{

unsigned int i

unsigned char j

for(j=0j<nj++)

{

for(i=0i<Fosc/44000i++)

{

}

}

}

#ifndef __PWM__H__#define __PWM__H__void pwm_ccp1(unsigned char a,unsigned char b)void pwm_ccp2(unsigned char a,unsigned char b)#endifvoid pwm_ccp1(unsigned char a,unsigned char b)//左边PWM //CCP1 模块的 PWM 工作方式,周期为(b+1)*4*Tosc*(TMR2前分频值)=b+1 us //pwm高电平=a:CCP1CON(第四五位)Tosc*(TMR2前分频值)//pwm高电平=a:CCP1CON(第四五位)Tosc*(TMR2前分频值){//a>b时有最高转速CCPR1L=a //* 设置工作循环的高 8bit 为 aCCP1CON=0X0C //0000 1100 设置 CCP1 为 PWM 工作方式,且工作循环的低 bit2 为 11*/CCP1IE=0//* 禁止总中断和外围中断 */PR2=b //* 设置 PWM 周期 */TRISC2=0 //* 设置 RC2/CCP1 为输出 */T2CON=0X04 //* 0000 1000前分频比为 1:1 ,后分频器1:2,打开 TMR2 ,同时输出 PWM 信号 */}void pwm_ccp2(unsigned char a,unsigned char b) //右边PWM//CCP2 模块的 PWM 工作方式,周期为(b+1)*4*Tosc*(TMR2前分频值),//pwm高电平=a:CCP2CON(第四五位)Tosc*(TMR2前分频值){CCPR2L=a //* 设置工作循环的高 8bit 为 aCCP2CON=0X0C //* 设置 CCP2 为 PWM 工作方式,且工作循环的低 bit2 为 11*/CCP2IE=0 //* 中断屏蔽PR2=b //* 设置 PWM 周期 */TRISC1=0 //* 设置 RC1/CCP2 为输出 */T2CON=0X04 //* 前分频比为 1 ,打开 TMR2 ,同时输出 PWM 信号 */}