首页 > 代码库 > C51回顾二
C51回顾二
一.在使用多位一体数码管时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连在一起的,独立的公共端可以控制具体哪一位数码管可以显示,连在一起的段线可以控制到底显示什么数字。通常我们把公共端叫做位选线,连接在一起的段线叫做段选线。通常单位数码管是10个引脚,二位数码管也是10个引脚,四位数码管是12位引脚。
二.在嵌入式编程中,根据不同的需要来建立自己的码表会经常遇到的,这里共阴极数码管的码表在C51中可以这样建立,以下只是一个示例:
unsigned char code table[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};分别代表0~F的数字。这里code表示编码的意思,编译后数组直接分配到程序空间中,去掉code后,定义的数组编译后会被分配到内存空间。
三.我们知道控制一个多位数码管的显示,需要两类信号,一个是段选信号,一个是位选信号,这里我们要先送哪一个信号为好了?
1)先送位选信号,在送段选信号。这里要注意在送位选信号以前,必须先清除段选总线上的信号,以免段选总线上的信号立即被显示,而此时被显示的数据不一定是我们实际要送的段选信号。简单的过程描述为消影,送位选信号,在送段选信号。
2)先送段选信号,然后消影,在送位选信号。
注:这里我们通常在硬件上需要加数据锁存器,如74HC573.
四.C51中断服务程序的写法:
void 函数名() interrupt 中断号 using 工作组
{
中断服务程序内容
}
注:中断函数不能带返回值;
中断函数也不能带任何形参;
中断号是指单片机中几个中断源的序号,这个序号是编译器识别不同中断的唯一符号。
工作组是指这个中断函数使用单片机内存中4组工作寄存器中的哪一组,C51编译器在编译程序时会自动分配工作组,因此“using 工作组”我们可以省略不写。
五.面对51单片机的中断系统,可以从以下几个问题思考?
1)有几个中断源?每个中断源的触发方式有几种(也可理解为中断源的触发条件是什么)?
2)每个中断源的中断优先级是否可设置?还是默认它是最低或最高的,还是按查询次序来处理?
3)中断请求标志位,请求中断前是硬件还是软件控制请求?请求中断得到响应是硬件还是软件结束请求?
4)中断允许标志位,是几级允许控制?它的允许是否与外部引脚也有关(即不是纯软件的控制)?
5)中断对应的寄存器是位操作和字节操作都可以还是只能字节操作?
6)中断能否被打断,有两个概念:中断能否被自身的中断所打断?中断能否被其他中断所打断?
C51回顾二