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生成项 ...
随机推荐
- Code Forces 645B Mischievous Mess Makers
It is a balmy spring afternoon, and Farmer John's n cows are ruminating about link-cut cacti in thei ...
- No such file or directory
项目-targets-build phases, 然后从copy bundle resources里面删掉红色的错误资源文件
- 适配器模式(Adapter Pattern)--不兼容结果的协调
定义:将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper); 分类: 对象适配器:适配器与适配者之间是关联关系; 类适配器:适配器和适配者之间是继承 ...
- 【react读取文件】react发送GET请求读取静态文件
react中,使用发送请求的方式把static文件夹中的前端可访问的静态文件读取成字符串: 1.new request,需要用到getRequestHeaders组件 2.fetch获取respons ...
- Linux ls命令
ls:即列表List的意思,用来列出目录下的文件用来列出给定目录下的文件,参数为空默认列出当前目录下的文件. 用法是:ls [选项] [目录] 常用的选项有 -a, –all 列出目录下的所有文件,包 ...
- nodejs获取参数的方法
1 获取get的querystring参数 GET /test?name=fred&tel=0926xxx572 let aa = req.param("name"); l ...
- linux 实用命令
从一台机器远程连接到另一台机器: ssh platform@192.168.155.116 从一台机器发送文件到另一台机器: scp /home/weihuang/vie-zyzj.jar platf ...
- Oracle 通过undo块查看事务信息(转)
数据库版本:Oracle 11.2.0.3 RAC 实验目的:通过undo块查看Oracle事务信息 实验细节:1 开始一个事务SQL> select * from t1; ID NAME- ...
- 使用jQuery创建节点、将节点插入到指定的位置
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 4-es6的模块化编程
诞生背景其他都是第三方库,只有es才是官方正宗的,如果es早就制定的话,也不至于现在的这么百花齐放(混乱)的局面了 核心规范一个文件就是一个模块export是暴露出模块的公开方法import是导入 实 ...