IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> PIC16F877A单片机 (中断与定时器Timer0) -> 正文阅读

[嵌入式]PIC16F877A单片机 (中断与定时器Timer0)

PIC16F877A单片机 (中断与定时器Timer0)

1 基本原理

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2 实现代码

/*----------------函数功能:
	    中断 定时器0
--------------------------*/

#include<pic.h>// 调用PIC16f87XA单片机的头文件
//#include"delay.h"//调用延时子函数


__CONFIG(0xFF32);//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关
//__CONFIG(HS&WDTDIS&LVPDIS);



/*-----------宏定义--------------*/
#define  uint  unsigned int
#define  uchar unsigned char
#define  V0     RD0



uint i;



/*-----------子函数声明--------------*/



/*-----------主函数--------------*/
void main()
{
	TRISD=0xfe;			//设置数据方向 RD7-RD1为输入,RD0为输出
	PORTD=0X00;			//端口赋初值


	
	/********定时器TMR0初始化**********/
	//TMR0的时钟源 选择 内部指令周期(fosc/4)
	T0CS=0;				//TMR0时钟源选择位   
	

	//不要预分频器
	//PSA=1;			//预分频器分配给WDT(看门狗),也就是1:1分频  此时PS0~PS2无效
	//要预分频器  下面四条指令代替上面一条指令
	PSA=0;				//预分频器分配位
	PS0=0;				//预分频 1:8,三个比特位的对应编码为010
	PS1=1;
	PS2=0;


	//8位计数寄存器赋初值
	//定时2000us=250us*8(八分频),初值TMR0=256-(250-13)=19=0x13。本来TMR0应该是256-250。为什么要加13个脉冲?	
	// 13的来源?13=8+2+3。8:中断现场保护以及其他语句共消耗8个指令周期;2:周期滞后时间;3:中断响应时间。
	TMR0=0x13; 			//8位计数寄存器	

	
	T0IF=0;				//TMR0的溢出中断标志位清零 清零
	T0IE=1;				//中断允许控制位 置一


	//******************** 开全局中断设置
	//定时器T0设置了中断允许,此处要开全局中断
	GIE=1;				//中断总允许控制位 置一
	

	while(1)			// 死循环,单片机初始化后,就一直运行这个死循环
	{

	}
	
}


/*************中断服务程序***************/
void interrupt ISR(void)//PIC单片机的所有中断都是这样一个入口
{
	// T0IF标志位为计数器由全1变为全0的时候,自动产生.
	if(T0IF==1)			//需要进一步判断是否为T0中断    
	{
		//定时器中断后,要重置初值,以备下次中断
		TMR0=0x13;	


		//溢出中断标志位清零     如果T0IF出现上升沿,则产生中断。所以中断发生之后要清零。		
		T0IF=0;			
		

		// 执行中断处理程序
		if(++i>250)		//2ms中断一次,再计次250次后就是500ms
		{
			i=0;
			V0=!V0;		// 取反  实现一秒的闪烁
		}
		
	}
}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:09:12  更:2021-10-17 12:09:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:41:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码