历史上的今天
今天是:2025年08月05日(星期二)
2021年08月05日 | 8051外部中断1解析
2021-08-05 来源:eefocus
程序实现的功能:
在实验板上左下方有一个黑色的独立按键(K4), 当我们按下它时, D1(LED灯)的状态就会取反.
(外部中断1和外部中断0在处理上类似, 红色的部分为不同之处)
中断处理程序标号:
外部中断0 -----------> 0
定时器0中断 -----------> 1
外部中断1 -----------> 2
定时器1中断 -----------> 3
串口中断 -----------> 4
独立按键电路原理图(K4对应P33):

程序源代码:
#include void delay()//获得1ms延时 { TH0 = 0xFC; TL0 = 0x18;//65536 - 1000 = 64536 = FC18H TR0 = 1;//开启定时器0 while(TF0 == 0);//等待定时器0计数溢出 TF0 = 0; TR0 = 0;//暂停定时器0 } void EX_INT0() interrupt 2//外部中断1处理函数 { delay();//1ms延时消抖 if(P33 == 0) { P20 = ~ P20;//D1电平翻转 } } int main() { TMOD = 0x01;//设置定时器0的工作模式 TR0 = 0; TF0 = 0; P20 = 0;//开发板上D1亮 EA = 1;//中断总开关打开 EX1 = 1;//外部中断1开关打开 IT1 = 1;//边沿触发 //IT0 = 0 -> 低电平触发中断, IT0 = 1 -> 边沿触发中断 while(1) { ; } return 0; }
下一篇:8051外部中断0解析
史海拾趣
|
能否让Nk.Nb0的大小自动变化? 现在我的NK.NB0大小都一定会等于config.bib文件中定义的大小。 里边的ROMSIZE等于多大,NK.NB0就一定是多大。 请教… 查看全部问答> |
|
最近写了个应用程序对数据总线上的数据进行操作,关于物理地址和虚拟地址的映射我知道 假设*vi_adress为映射好的虚拟地址 先是写操作 *vi_adress=tmp (tmp是数据) 这个操作是成功的 现在我想读取外面从过来的数据 tmp=*vi_adress& ...… 查看全部问答> |
|
Wince 5.0 如何实现 AlphaBlend? Requirements OS Versions: Microsoft? Windows CE? 5.0 and later. Header: Windows.h. Link Library: Coredll.lib. 加入以上 lib后,编译仍出错。 应如何处理,找了些算法来代替,但速度太慢。 谢谢。… 查看全部问答> |
|
偶菜鸟, 问一个傻子问题,硬件中断如何跳转到软件代码 例如,我有一个键盘,按一下, CPU是如何通过中断服务程序跳转到程序中的代码中? … 查看全部问答> |
|
【诚聘】Analog Custom Layout Engineer 美资公司 LSI 上海研发中心高薪诚聘存储通讯领域人才,薪水待遇优厚,部分人员有出国培训机会。(部门内部推荐,成功机会更高)有意者请将中英文简历发送至:asic_tapeout@hotmail.comAnalog Custom Layout EngineerDESCRIPTION OF DUTIES IN ADDITION ...… 查看全部问答> |




