STC51六中中断配置点亮一个LED
一.外部中断0、1(分别點亮一個LED)
/*******************************************************************************
* 标题: 计数器中断实验 * #include <reg52.h>
#include<intrins.h>
sbit led1 = P0^0;
sbit led2 = P0^1; void main(void)
{ // IT0=0; //低电平触发
IT0=1; //下降沿触发
EX0=1; // IT1=0; //低电平触发
IT1=1; //下降沿触发
EX1=1;
EA=1; while(1);
}
/********************************************************
* INT0中断函数 *
********************************************************/
void counter0(void) interrupt using
{ EX0=;
led1=~led1;
EX0=;
}
/********************************************************
* INT1中断函数 *
********************************************************/
void counter1(void) interrupt using
{ EX1=;
led2=~led2;
EX1=;
}
/********************************************************/
二.定时器计算器中断 0 (1S,LED灯闪烁)
#include <reg52.h>
#include <intrins.h> typedef unsigned char uchar;
typedef unsigned char uint; uint num1,num2;
sbit led1=P2^; void system_Ini()
{
TMOD = 0x00; //选择模式0 13位计数 最大计数8192 // TH0=0x1C; //12.000M 预装初值
//TL0=0x18;
TH0 = ( - )/;
TL0 = ( - )% ;
IE = 0x8A; //中断
TR0 = ; //开启T0定时器 }
void main()
{
system_Ini();
while();
} void T0zd(void) interrupt //3定时器1的中断号 1定时器0的中断号 0外部中断1 2外部中断2 4串口中断
{
//TH0 = 0xFc; //12.000
//TL0 = 0x18; TH0 = ( - )/ ;
TL0 = ( - )%;
num1++;
if(num1>)
{
num1=;
num2++;
if(num2>)
{num2=;P2=~P2;}
}
}
三.定时器计算器中断 1(1S,LED灯闪烁)
#include <reg52.h>
#include <intrins.h> typedef unsigned char uchar;
typedef unsigned char uint; uint USE_C; void main()
{
TMOD=0x10; //定时/计数器1工作于方式1
TH0=0x4C; //定时器初始值
TL0=0x00; //50ms定时常数
//THO=(65536-45872)/256; 11.0592MHZ
//TLO=(65536-45872)%256;
EA=; //开总中断
ET1=; //允许定时/计数器1 中断
TR1=; //启动定时/计数器1 中断 while();
} /*********************************************************
中断服务函数
**********************************************************/
void Time1(void) interrupt // using 0
{
TH1=0x4c; //50ms定时
TL1=0x00;
if (++USE_C == ) //每隔1秒发声
{ P2=~P2;
USE_C = ;
} }
四.定时器计算器中断 2(1S,LED灯闪烁)
#include <reg52.h>
#include <intrins.h> typedef unsigned char uchar;
typedef unsigned int uint; uint num; void main() // 该中断计数循环3686(晶振11.0592MHZ)次是一秒4000次(12MHZ)
{
TMOD=0x02;
TH0=;
TL0=; //当低八位记满溢出 TF0标指位为 1 反应给 CPU 申请中断 同时TH0 中数组 //自动装入(复制)TL0中
EA=;
ET0=;
TR0=;
while()
{
if(num==) // 若为11.0592 num=3686
{ P2=~P2;
num=;
}
}
}
void T0_time() interrupt using
{
num++;
}
五.定时器计算器中断 3(1S,0.5s,LED灯闪烁)
#include <reg52.h>
#include <intrins.h> typedef unsigned char uchar;
typedef unsigned int uint;
sbit led1=P2^;
sbit led2=P2^;
uint num1,num2; void main()
{ TMOD=0X03;
TH0=;
TL0=;
EA=;
ET0=;
ET1=;
TR0=;
TR1=;
while()
{
if(num1>=)//3686 11.0592
{
num1=;
led1=~led1;
}
if(num2>=)//1843 11.0592
{
num2=;
led2=~led2;
}
}
}
void TLO_time() interrupt //低八位用定时器计数器中断0的中断源
{
TL0=;
num1++;
}
void TH0_time() interrupt //高八位用定时器计数器中断1的中断源
{
TH0=;
num2++;
}
六.定时器计数器中断 0 (计数器中断)
/*******************************************************************************
* 标题: 计数器中断实验 *
* *
* *
* 实验说明:用单片机产生的脉冲波,作为T0外部事件的脉冲输入,对于HC6800EM3的型 *
* 号,可以自带的脉冲发生器作为T0外部事件的脉冲输入 *
* 连接方法:参开图片或视频 *
********************************************************************************
* *
* 请学员认真消化本例程,掌握定时器/计数器中断使用 *
********************************************************************************/ #include <reg52.h>
#include<intrins.h>
sbit LED = P0^;
sbit Pulse = P1^; void Timer0() interrupt
{
TH0 = 0Xa0; //给计数器装初值
TL0 = 0X00; LED = ~LED; //LED灯取反 } void main()
{
P0 = 0XFF;
TMOD = 0X05; //选用计数模式和 选用模式1
TH0 = 0Xa0; //给计数器装初值
TL0 = 0x00;
EA = ; //开发所有中断
ET0 = ; //开启定时器T0中断
TR0 = ; //启动T0定时器 while()
{
Pulse = ;
_nop_(); //空指令函数 用于产生方波
_nop_();
_nop_();
_nop_();
Pulse = ;
_nop_();
_nop_();
_nop_();
_nop_(); } }
写于2012年年末
STC51六中中断配置点亮一个LED的更多相关文章
- 点亮一个led
1:RS232电平:计算机串口 高电平为-12v,低电平为+12v,所以计算机与单片机进行通信的时候需要加电平转换芯片max232(高电平为-9到-12,低电平为+3到+12之间的. max232通常 ...
- 从点亮一个LED开始,Cortex-A9裸机程序设计
电路原理图: 如何点亮一个LED? 通过对原理图进行分析,我们能够发现给三极管的基极加上一个高点平时,三级管be结导通构成通路,此时二极管就点亮了.若要将LED熄灭只需取消高电平输出. 如何使三级管基 ...
- 单片机基础——使用GPIO输出点亮一个LED灯
1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...
- 点亮一个led灯
/********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...
- 进阶之路(基础篇) - 001 亮一个led灯
/********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...
- STM32学习笔记(一)——点亮一个LED
引言 最近报名了2017全国大学生电子设计竞赛,我们学校是第一次参加这个比赛,由于8/9月份就要比赛了,所以现在准备是比较晚的了,指导老师说只能做控制类的题目了,让我们学习一下STM32单片机,51到 ...
- 第一个程序点亮一个LED灯
#include <reg52.h> // 引用52包文件 可以理解为命名空间 sbit P1_0 = P1^0; // 定义P1管脚0 void main() ...
- linux IMX6 汇编点亮一个LED灯
驱动Linux引脚与驱动STM32其实是一样的,都是在操作寄存器,在相应的寄存器上附上相应的值即可驱动. IMX6U手册上有各个管脚的命名,跟STM32不同,IOMUXC_SW_MUC_CTL_PAD ...
- 《STM32CubeMX配置STM32H743XI工程》第一讲《初始化UART,重定义printf函数,点亮一个LED灯》
1.打开STM32CubeMX软件->新建一个工程(软件自行到ST官网下载安装) 2.输入对应的芯片型号(本次基于野火STM32H743XI Pro 开发板)点击Start Project生成项 ...
随机推荐
- OKEx量化分析报告[2017-12-09]
OKEx量化分析报告[2017-12-09] [分析时间]2017-12-09 15:24 [分析对象]OKEx [计价币种]USDT [报告内容]DASH_USDT短期 -3.8中期 ...
- python基础-第五篇-5.3装饰器
小白发呆的看着窗外,同事们陆陆续续的地来到公司,想起算法,小白就飘飘然了.突然后面传来一声呼唤,原来是小刘! 小刘:不好意思啊!堵车了,就来晚了点,不耽误你的时间,咱们就开启的今天的培训内容吧! 小白 ...
- 原型模式(Prototype Pattern)--对象的克隆
定义:使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象; 原型类的核心在于如何实现克隆方法: 能够实现克隆的Java类必须实现一个标识接口Cloneable,表示这个类支持被复制; 通 ...
- 调试maven源代码
下载源代码,导入idea 运行MavenCli ,设置vm参数 -Dclassworlds.conf=/Users/fsq/Downloads/apache-maven-3.6.2.0/bin/m2. ...
- golang 系统包自动填写插件
Make sure $GOPATH/bin is in your $PATH (Windows: %GOPATH%\bin goes in your %PATH%). [保证你的golang环境正常] ...
- 怎样将Arranged_2压入General_Polygon_set_2中
Thursday, March 14, 2013 How to Jam an Arrangement_2 into a General_polygon_set_2 I spent about thre ...
- 已经安装好了的lamp或者lnmp环境,编译其他的模块进来?
问题: 如何为已经编译好了的环境再次编译其他的模块? 方法: 一般分为两种情况: 1. php的源码安装包中本来就有这个 .so 的扩展,我们只需要进入到php的安装源码包中的ext文件夹下,然后找到 ...
- vue 项目中assets文件夹与static文件夹引用的区别
首先,assets文件夹和static文件夹在vue-cli生成的项目中,都是用来存放静态资源的. 1.assets目录中的文件会被webpack处理解析为模块依赖,只支持相对路径形式.build的时 ...
- MySQL临时表的简单用法(复制)
当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查 ...
- 如何将python3.6软件的py文件打包成exe程序
在我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序.在浏览网上的资料来看,有利用pyinstaller和cx_Freeze进行 ...