文档详情

数码管显示.ppt

发布:2017-03-09约2.39千字共13页下载文档
文本预览下载声明
左/右移多位函数 空操作函数 位测试函数 函数式宏定义 中断源的符号、名称及产生的条件 第二个任务:动态数码管扫描 基础知识 静态显示方式 动态显示 定时器初值 计算 定时/计数器编程应用 C51内部函数 有一些函数,用汇编语言编写非常直接、简单、目标代码短,而用C编写却很长。对于用汇编语言编写的这类库函数叫内部函数。内部函数在C51中已按C的规范用汇编语言写好。用户右以直接当作C语言函数调用。内部函数原型说明放在intrans.h文件中。 格式:_crol_/_iror_/_lrol_(参数表); 原型说明: unsigned char _crol(unsigned char val,unsigned char n); unsigned int _irol(unsigned val,unsigned char n); unsigned long _lrol(unsigned long val,unsigned char n); 第一个参数是被移位的变量,第二个是欲移位位数:无符号字符型变量为0-7;无符号整型为0-15(右移为0-32);无符号长整型是0-31。 例:#includeintrans.h void main() { unsigned int y; y=0x00FF; y=_irol_(y,4); } 格式:void _nop_(void); 作用:产生单一汇编指令nop.执行该函数实际上无实质性操作,仅是延时一个机器周期. 例:从P0.7输出三个机器周期宽的正脉冲 P0 =~0x80; P0 |=0x80; _nop_; _nop_; P0 = ~0x80; 格式: bit _testbit_(bit x); 说明:参数和返回值必须是位变量. 该函数产生汇编指令JBC X,- -。用于测试位变量是X,是0,还是1,并将其值经CY返回. 例: #includeintrans.h bit flag; char val; void main() { if(!_teatbit_(flag)) val- -; } JBCflag ? C002 DECval C002: RET 行末标志前加\,则其后语句将作为单个预处理命令.函数式宏定义声明正式参数名,放在括号中,用逗号分隔;左括号与宏名之间不能有空格,如果出现空格,则定义成不带参数的宏和以左括号开始的宏体.正式参数名应为标识符,参数不能重名,宏体中不一定要出现这些参数名.宏参数中可出现花括号和下标方括号,但不能包含逗号. #define WR573(dat)\ {\ P0 = dat;\ LE573 = 1;\ _nop_();\ LE573 = 0;\ } INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。 TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。 第一个任务:流水灯 以74HC573扩展输出端口的方法驱动8只LED,低电平点亮74HC573 输入接P0端口,输出接8只LED,P1.4控制LED. 两片74HC573驱动动态数码管,输入端都接到P0端口,I/O方式控制。P1.2和P1.3分别控制两个74HC573的LED信号,P1.2对应位选、P1.3对应段选。 七段数码管加上一个小数点,共计8段。因此LED显示器提供的编码正好是一个字节。 0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0 1 2 3 4 5 6 7 8 0x6f 0x77 0x7c 0x39 0x5e 0x79 0x71 0x00 9 A B C D E F 无显示 LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测
显示全部
相似文档