- 1、本文档共110页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 ;4.1 输入输出端口
4.2 中断
4.3 定时/计数器TMR0
4.4 定时/计数器TMR1
4.5 定时/计数器TMR2
4.6 A/D转换器
4.7 CCP模块(Capture/Compare/PWM)
4.8 异步串行通信(USART)
4.9 EEPROM的读写
4.10 SLEEP工作方式;4.1 输入输出端口 ;每个IO引脚的最大输出电流(拉电流)为20mA,最大输入电流(灌电流)为25mA。
端口A、B、E的最大输入电流总和与输出电流总和均为200mA;
端口C、D的最大输入电流总和与输出电流总和也为200mA。;对I/O 端口的写操作是一个读-修改-写的过程。
一条写IO引脚的指令如RB3=1,实际上是在指令的开头读入整个B端口,并在指令周期的末尾时刻把1写入RB端口3的输出锁存器。
如果立即对同一端口操作,如x=PORTB,在指令周期的开始处,由于前一指令产生在IO口的电平尚未稳定,读入的可能是引脚的前一个状态而不是新状态值。
; 因此连续对同一端口的操作时,最好用一个NOP 指令或者其他不访问该I/O 端口的指令隔开。
RA3=1;
NOP();
RA4=0;;4.1.1 端口A;1、端口B有8个引脚:
RB0/INT:IO引脚、INT中断;
RB1、RB2、RB4、RB5:IO引脚;
RB3/PGM:IO引脚、低电压编程电压引脚;
RB6/PGC:IO引脚、编程时钟线;
RB7/PGD:IO引脚、编程数据线。
2、如果使用PIC KIT3作为调试工具,RB6、RB7引脚将被调试系统占用,因此在调试时此二个引脚暂不能使用。 ;3、8个引脚具有内部弱上拉使能控制
由OPTION_REG寄存器的第7位RBPU控制,如果弱上拉使能,作为输入的RB口在端口悬空时将被上拉到高电平。以RB0为例,如下图所示:
;4、RB0/INT具有外部中断功能。
5、RB的的高4位还具有电平变化中断功能
当RB4~RB7引脚做为输入时,只要有一个引脚的逻辑电平发生变化,就会使RB电平中断标志位置1。这些功能的设置,与OPTION、INTCON有关,参见相关各章节。 ;4.1.3 端口C;4.1.4 端口D;4.1.5 端口E;4.2 中断;中断的执行过程;PIC16F877A有15个中断源,每个中断源都有自己的使能控制位(IE)和中断标志位(IF)。
;中断逻辑示意图;bit7; ;bit7;bit7;bit7;
;进入中断后硬件自动屏蔽全局中断,即中断后GIE=0,中断返回后自动恢复全局中断允许,GIE=1。
因此,PIC16单片机不允许中断嵌套!也就是说,在中断服务程序未退出时,即使有新的中断发生,也不能进入中断。等当前的中断处理完成退出中断后才能重新进入中断。
; 每按一次按键,LED翻转亮;//例 用RB0/INT按键,每按一下,LED翻转亮
#include pic.h
__CONFIG(0x3F39);
#define LED RB7
char A=0; //全局变量,保存LED状态
void DELAY(unsigned int);
void interrupt ISR(void);
void main(void)
{ OPTION_REG=0 //RB0为下降沿触发中断
TRISB =0 //设定RB0为输入,RB7为输出
INTCON=0 //允许RB0/INT中断
LED=0; //初始状态LED灭
while(1); //原地等待
}
;//========中断服务程序
void interrupt ISR(void)
{ if (INTF==1)
{ DELAY(30); //延时30ms,躲过抖动时间
INTF=0; //清中断标志位,须在延时之后!
LED=!LED;
}
}
;
//======延时(n)ms,4MHz晶振下
void DELAY(unsigned int n)
{
unsigned int j;
char k;
for (j=0;jn;j++)
for (k=246;k0;k--)
NOP();
}
以后此程序略,可参见附录:公用子程序。;4.3 定时/计数器TMR0;
若要对外部脉冲计数,必须
①编程OPTION_REG ,(T0CS)置1
②编程TRISA , RA4/T0CKI引脚设置为输入
③硬件电路:符合一定要求的外部脉冲送RA4/T0CKI
;与TMR0有关的寄存器;OPTION_REGPS2-
您可能关注的文档
最近下载
- (安卓手机刷机包制作.doc VIP
- 学生如何预防颈椎疾病.pptx VIP
- 美学观点和历史观点的批评标准市公开课金奖市赛课一等奖课件.pptx
- T_CTSS 58-2022_茶叶感官风味轮.pdf
- 2025年北京市朝阳区高三二模物理试卷及答案.pdf
- 保险投诉培训课件.pptx VIP
- SWITCH暗黑破坏神3超级金手指修改 版本号:2.7.4.84040.docx
- 第52次《中国互联网络发展状况统计报告》.docx
- 八年级下册-【知识速记】备战2023年中考地理核心知识背记(湘教版).docx VIP
- 七年级上册(考点梳理课件)-【知识速记】备战2023年中考地理核心知识背记(湘教版).pptx VIP
文档评论(0)