博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单片机数码管消隐及中断
阅读量:4166 次
发布时间:2019-05-26

本文共 1496 字,大约阅读时间需要 4 分钟。

一.什么是“鬼隐”

在数码管动态显示过程中,主要是在数码管位选和段选产生的瞬态造成的。数码管的不应该亮的地方有点微微发亮,这种现象就是“鬼隐”。

二.消除“鬼隐”的办法

1.延时(简单却拙劣)

利用延时函数,使得数码管该亮的地方亮的时间久一点,那么不该亮的地方就不会再亮了。

2.关闭段、位

关闭段:在改变值之前,使数码管全部熄灭。

关闭位:关闭数码管的位,等到赋值过程都做好了后,再重新打开。

三.中断的应用

1.中断使能寄存器

a).中断使能寄存器的位分配(地址0xa8、可位寻址)

7 6 5 4 3 2 1 0
符号 EA ET2 ES ET1 EX1 ET0 EX0
复位值 0 0 0 0 0 0 0

b).中断使能寄存器的位描述

符号 描述
7 EA 总中断使能位,相当于总开关
6
5 ET2 定时器2中断使能
4 ES 串口中断使能
3 ET1 定时器1中断使能
2 EX1 外部中断1使能
1 ET0 定时器0中断使能
0 EX0 外部中断0使能

c).中断查询序列

中断函数编号 中断名称 中断标志位 中断使能位 中断向量地址 默认优先级
0 外部中断0 IE0 EX0 0x0003 1(最高)
1 T0中断 TF0 ET0 0x000B 2
2 外部中断1 IE1 EX1 0x0013 3
3 T1中断 TF1 ET1 0x001B 4
4 UART中断 T1/R1 ES 0x0023 5
5 T2中断 TF2/EXF2 ET2 0x002B 6

2.中断优先级

a).中断优先级寄存器的位分配(地址0xB8、可位寻址)

7 6 5 4 3 2 1 0
符号 PT2 PS PT1 PX1 PT0 PX0
复位值 0 0 0 0 0 0

b).中断优先级寄存器的位描述

符号 描述
7 保留
6 保留
5 PT2 定时器2中优先级断控制位
4 PS 串口中断优先级断控制位
3 PT1 定时器1中断优先级断控制位
2 PX1 外部中断1优先级断控制位
1 PT0 定时器0中断优先级断控制位
0 PX0 外部中断0优先级断控制位

3.中断程序的例子

#include 
#define uchar unsigned char#define uint unsigned intsbit D1=P1^0;sbit wela=P2^7;sbit dula=P2^6;uint t=0;void main(){ D1=0; TMOD=0x01; EA=1; ET0=1; TR0=1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; while(1) { if(t==10) { t=0; dula=1; P0=0x7f; dula=0; wela=1; P0=0xc0; wela=0; } }}void temer() interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; t++; dula=1; P0=0x00; dula=0; wela=1; P0=0xc0; wela=0;}

转载地址:http://irrxi.baihongyu.com/

你可能感兴趣的文章
Activity类中7个与活动生命周期回调有关的方法
查看>>
jwt与token+redis,哪种方案更好用?
查看>>
Comparator接口
查看>>
在二叉树中找到一个节点的后继节点
查看>>
寻找第K大
查看>>
String.trim
查看>>
缓存行 伪共享
查看>>
400 : perceived to be a client error 错误
查看>>
Establishing SSL connection without server's identity verification is not recommended
查看>>
扫描包不存在:pojo类找不到
查看>>
c语言中计算数组长度的方法
查看>>
java 数组定义
查看>>
java中的&和&&的区别
查看>>
Java的位运算符
查看>>
BufferedReader与Scanner的区别
查看>>
java String于常量池中的介绍
查看>>
java Text 错误: 找不到或无法加载主类 Text
查看>>
XShell连接ubantu:给ubantu安装ssh
查看>>
c语言的null和0
查看>>
二进制详解:世界上有10种人,一种懂二进制,一种不懂。
查看>>