C51 INT0中断方式键盘扫描程序

发布者:MysticMoon最新更新时间:2016-10-14 来源: eefocus关键字:C51  INT0  中断方式  键盘扫描程序 手机看文章 扫描二维码
随时随地手机看文章
//中断方式键盘扫描程序,P1.0接二极管,P3.2 按键接INT0中断输入。按一次键P1.0翻转一次。

#include
void delay(unsigned int x);

sbit led=P1^0;
main()
{
  IT0=1;
  EA=1;
  EX0=1;
  while(1)
    { }
}

void delay(unsigned int x)
{  unsigned int i;
   for(i=0;i   { }
}

void int0() interrupt 0
{  EX0=0;    //关中断,
   led=~led;
   delay(30000);
   IE0=0;      //清除INT0中断程序执行过程中的中断请求。保证按一次键,led翻转一次,否则可能翻转2次。
   EX0=1;      //开中断
}      

关键字:C51  INT0  中断方式  键盘扫描程序 引用地址:C51 INT0中断方式键盘扫描程序

上一篇:C51 INT0方式 1键多能程序
下一篇:T2中断动态显示时分秒程序

推荐阅读最新更新时间:2024-03-16 15:15

51学习之定时器中断的两种方式——查询和中断
定时器中断可用两种方式处理:查询和进入中断处理。 1.查询 void Init_T0 (void) 定时器初始化 { TMOD = 0x01; TH0 = (65536-65000) /256; TL0 = (65536-65000) %6; EA = 1; ET0 = 1; TR0 = 1; } void Main() 主函数 { Init_T0 (); Speak1 =1; if(TF0==1) 查询中断标志 { Speak1=~Speak1; //TH0 = (65536-65000) /256; //TL0 = (65536-65000) %6; TF0=0; } } 2.进入中断处理 void Init_T0 (void
[单片机]
单片机C语言C51构造数据类型
A. 数组 一.一维数组 一维数组只有一个下标,定义的形式如下: 数据类型说明符 数组名 各部分说明如下: (1)“数据类型说明符”说明了数组中各个元素存储的数据的类型。 (2)“数组名”是整个数组的标识符,它的取名方法与变量的取名方法相同。 (3)“常量表达式”,常量表达式要求取值要为整型常量,必须用方括号“ ”括起来。用于说明该数组的长度,即该数组元素的个数。 (4)“初值部分”用于给数组元素赋初值,这部分在数组定义时属于可选项。对数组元素赋值,可以在定义时赋值,也可以定义之后赋值。在定义时赋值,后面须带等号,初值须用花括号括起来,括号内的初值两两之间用逗号间隔,可以对数组的全部元素赋值,也可
[单片机]
51单片机矩阵键盘扫描程序
#include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换 #define KeyPort P1 sbit LATCH1=P2^2;//定义锁存使能端口 段锁存 sbit LATCH2=P2^3;// 位锁存 unsigned char code dofly_DuanMa ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71};
[单片机]
C51单片机学习笔记之矩阵键盘
简介 矩阵键盘一般为4×4或4×3的。矩阵键盘的判断方式分按行扫描和按列扫描。 简单说就是给全体一个高电平,然后给一个按键的一端附上低电平,再判断另一端是否为低电平。 原理图 代码部分 #include void delay()//延时函数 { unsigned int i; for(i=0;i 30000;i++); } unsigned char MatrixKey() { unsigned char KeyNumber;//定义一个返回值 P1=0xFF;//全体给高电平 P1_0=0;//一端给低电平 if(P1_4==0)//判断另一端是否为低电平 { delay(); while(P1
[单片机]
<font color='red'>C51</font>单片机学习笔记之矩阵<font color='red'>键盘</font>
C51(DHT11)温湿度+LCD1602
前言:软件延时真的很坑,校园网真的很烂 直接上码 LCD1602部分 (1).LCD1602.C #include reg52.h #include LCD1602.h #include INTRINS.h sbit LCD_RS=P2^6; sbit LCD_RW=P2^5; sbit LCD_E=P2^7; #define LCD_DatrPort P0 //指令函数 void LCD_WeitrCommand(unsigned char Command) { LCD_RS=0;//0写指令,1写数据 LCD_RW=0;//write mode LCD_DatrPort=Command; LCD_E
[单片机]
<font color='red'>C51</font>(DHT11)温湿度+LCD1602
《初学者C51自学笔记》之流水灯实现(位操作)
#include reg52.h sbit led0=P0^0; sbit led1=P0^1; sbit led2=P0^2; sbit led3=P0^3; sbit led4=P0^4; sbit led5=P0^5; sbit led6=P0^6; sbit led7=P0^7; void delay(void) { unsigned char a,b; for(a=0;a 200;a++) for(b=0;b 200;b++); } void main() { while(1) { led0=0; delay(); led0=1; delay(); led1=0; delay(); led1=1;
[单片机]
《初学者<font color='red'>C51</font>自学笔记》之流水灯实现(位操作)
步进电机C51控制程序
步进电机C51控制程序 #include reg52.h unsigned char code f_rotation ={0x02,0x04,0x08,0x10};//正转表格 unsigned char code b_rotation ={0x10,0x08,0x040,0x02};//反转表格 void delay(unsigned int i)//延时 { while(--i); } main() { unsigned char i; while(1) { for(i=0;i 4;i++) //4相 { p1=f_rotation ; //输出对应的相 可以自行换成反转表格 delay(10
[单片机]
C51学习心得
1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。 2、其他不频繁调用到和对运算速度要求不高的变量都放到xdata区。 3、常量放到code区,如字库、修正系数。 4、逻辑标志变量可以定义到bdata中。 在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。这样可以大大降低内存占用空间。定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。 5、data区内最好放局部变量。 因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved