/*
* PIC16F1x端口控制实验
* 芯片型号:PIC16F1936
* 主要特性:增强性中档8位CPU,8K Flash,512字节RAM,最高速度8MIPS,11通道10位 AD,2个比较器,96段LCD控制器,16通道电容触摸模块,3个增强性PWM/捕 获模块
*/
#include
/* 配置芯片的工作方式,相当于其他单片机的熔丝位 */
// CONFIG1
#pragma config FOSC = INTOSC // 使用内部时钟
#pragma config WDTE = OFF // 禁止看门狗
#pragma config PWRTE = OFF // PWRT disabled
#pragma config MCLRE = ON // MCLR/VPP pin function is MCLR
#pragma config CP = OFF // 禁止程序代码保护(debug时要关闭代码保护)
#pragma config CPD = OFF // 禁止EEPROM的保护
#pragma config BOREN = ON // 使能欠压复位
#pragma config CLKOUTEN = OFF // 禁止CLKOUT功能
#pragma config IESO = ON // Internal/External Switchover mode is enabled
#pragma config FCMEN = ON // Fail-Safe Clock Monitor is enabled)
// CONFIG2
#pragma config WRT = OFF // 禁止代码自编程保护
#pragma config VCAPEN = OFF // All VCAP pin functionality is disabled
#pragma config PLLEN = OFF // 禁止4x PLL
#pragma config STVREN = ON // Stack Overflow or Underflow will cause a // Reset)
#pragma config BORV = LO // 欠压复位电压为低档位(低档位为1.9V,高档位为2.5V)
#pragma config LVP = OFF // 高压编程模式
/* 定义系统时钟,在延时函数中需要这个定义 */
#define _XTAL_FREQ 16000000UL
#define Close_LED() LATBbits.LATB4 = 0 // RB4输出低电平
#define Open_LED() LATBbits.LATB4 = 1 // RB4输出高电平
int main(void)
{
/* 禁止4X PLL,内部16MHz时钟源 */
OSCCON = 0B11111000;
/* 清除PORTB数据锁存寄存器 */
LATB = 0;
/* 设置RB4端口为输出口,注意PIC有点特殊,1为输入0为输出 */
TRISBbits.TRISB4 = 0;
/* RB4输出低电平 */
LATBbits.LATB4 = 0;
/* 设置RB5端口为输入 */
TRISBbits.TRISB5 = 1;
/* RB5设置为数字端口 */
ANSELBbits.ANSB5 = 0;
/* 使能RB5内部上拉,作为数字输入端口在设计时要注意并不是所有端口都有内部上 拉的 */
WPUBbits.WPUB5 = 1;
/* 等待按键按下 */
while(PORTBbits.RB5 == 1)
;
while (1)
{
__delay_ms(1000);
Open_LED();
__delay_ms(1000);
Close_LED();
}
}
器件配置位可以在Window>Pic Memory Views>Configuration Bits中查询或者直接生成代码。
yupin1ger_144042119 2013-5-15 17:36