PIC16F887 RB0外部中断(2)
来源:互联网 发布:淘宝上买药品不能付款 编辑:程序博客网 时间:2024/05/23 16:12
#include <pic.h> #include <pic16f887.h> __CONFIG (CP_OFF&WDTE_OFF&BOREN_ON&PWRTE_OFF&FOSC_HS&WRT_OFF&LVP_OFF&CPD_OFF); /*配置位 CP_OFF,代码保护位,程序存储器代码保护关闭; WDTE_OFF,看门狗定时器使能位,看门狗定时器关闭,可以通过WDTCON寄存器的SWDTEN位使能; BOREN_OFF,掉电复位选择位,掉电复位关闭; PWRTE_OFF,上电定时器使能位,上电定时器关闭; FOSC_HS,振荡器选择位,高速晶振或谐振器在RA6/OSC2/CLKOUT和RA7/OSC1/CLKIN; WRT_OFF,闪存程序存储器自写使能位,写保护关闭; LVP_OFF,低电压编程使能位,RB3引脚有数字I/O,使用MCLK上的HV(高电压)来编程; CPD_OFF,数据代码保护位,数据存储器代码保护关闭; */ #define uchar unsigned char #define uint unsigned int #define LEDA RB3//定义灯1 #define RET RB0//定义灯1 void delay(unsigned int n); void interrupt ISR(void); uchar count; main() { TRISB=0X01; //RB0为输入,其余为输出 PORTB=0x09; //RB3置1 //ANSEL=0x00; ANSELH=0x00; //将RB0(AN12)引脚被分配给端口或特殊功能。//必须初始化ANSELH 寄存器以将模拟通道配置为数字输入。配置为模拟输入的引脚将读为0。 /*GIE = 1; //GIE: 全局中断允许位 1 = 允许所有未被屏蔽的中断PEIE = 1; //PEIE: 外设中断允许位 1 = 允许所有未被屏蔽的外设中断INTE = 1; //INTE:INT 外部中断允许位 1 = 允许INT 外部中断RBIE = 1; //RBIE:PORTB 电平变化中断允许位 1 = 允许PORTB 电平变化中断INTF=0; //INTF:INT 外部中断标志位 0 = 未发生INT 外部中断 */INTCON=0XD8; WPUB = 0X01;//使能上拉 /*INTEDG=0; //触发中断的边沿选择位 0 = INT 引脚下降沿触发中断*/ OPTION_REG=0x00; TRISD=0X00; //定义PORTD为输出 PORTD=0X00; //输出低电平 while(1) { } } //延时(n)ms void delay(unsigned int n) { unsigned int j; unsigned int k; for(j=0;j<n;j++) for(k=264;k>0;k--) NOP(); } void interrupt ISR(void) { if(INTF==1) //电平变化中断 { delay(20); if(RB0 == 0){INTF=0; PORTD = ~PORTD;LEDA = ~LEDA;}} }
代码经过测试。
0 0
- PIC16F887 RB0外部中断(2)
- PIC RB0外部中断程序
- 外部中断(2)
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 中断一、外部中断
- STM8S105S4_PKT学习笔记(2) 外部中断
- 51单片机外部中断编程实例2
- svg中的path指令分析
- js数组算法总结
- H2.64中I帧和IDR帧的区别
- Python中创建一个多维数组的方法
- C语言第一节-进制,运算符,输入输出
- PIC16F887 RB0外部中断(2)
- Navicat Preium 中文版破解
- Android 获取屏幕尺寸
- 采用全文索引解决模糊查询速度慢的问题
- socket,tcp IP
- android图片:多选相册的实现
- win7下安装和配置MongoDB的总结---阿冬专栏
- java基于AbstractQueuedSynchronizer实现资源共享锁,限制并发线程数目
- 继承Thread父类和实现Runnable接口的区别