精品文档---下载后可任意编辑在单片机开发过程中
一些非线性的控制过程
最适合做一个表格来
时时改变系统的参数
达到控制的目的
最常的如产生正弦的的程
就是建一个大的数组时时改变输出的 8 位字节送给外部 DA
由 DA 生成一个完整的正弦波
LED 显示也是一个例子
通过建一个数组来实现段码的点亮点灭
下面就是一个 LED表---digits[0]#define SEG_a 0x01#define SEG_b 0x02#define SEG_c 0x04#define SEG_d 0x08#define SEG_e 0x10#define SEG_f 0x20#define SEG_g 0x40#define SEG_dot 0x80unsigned char digits[10] = { (SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f), 过 MCS-51 指令系统中有专用的查表指令:MOVC A,@A+DPTR 和 MOV A,@A+PC
MOVC A,@A+DPTR 指令,DPTR 作为基址寄存器时,其值为 16 位而且可根据需要设计,故可用于在64KROM 范围内查表
编写查表程序时,首先把表的首址送入 DPTR 中,再将要查找的数据序号(或下表值)送入 A 中,然后就可以使用该指令进行查表操作,并将结果送累加器 A 中
MOVC A,@A+PC 指令,PC 作为基址寄存器时,其值由指令的位置确定,它只能设在查表指令操作码下的256 个字节范围内
编写查表程序时,首先把查表数据的序号送入 A 中,再把从查表指令到表的首地址间的偏移量与 A 值相加,然后使用该指令进行查表操作,并把结果送累加器 A 中
下面是把内部 RAM 30H-37H 单元中的十六进制数依次转换为 ASCII 码,并存入内部 RAM 60H-6FH 单元之