📄 数码显示.c
字号:
//************************************************************************
// File : SY_002.c
// Date : 2008-08-19
// Version : 1.3
// Powerd by : shenyae86 QQ:184676957
// modify by :
//*************************************************************************
// Descriptoon:
// 数码管显示程序 显示2008 采用中断扫描模式
// 适用于CC200A
// 被注释的程序可以使用于非译码器选通的数码管扫描(共阳极)
// 产品网站 http://www.sxcckj.com 传诚科技
// help:
// 参见实验指导书
//*************************************************************************
#include <reg51.h>
#include <intrins.h>
unsigned char data dis_index;
unsigned char code dis_code[]={
0xC0,/*0*/
0xA4,/*2*/
0x80,/*8*/} ;
unsigned char data dis_buf[4];
void main()
{
P0 = 0xff;
P2 = 0xff;
TMOD = 0x01;
TH0 = 0xFC;
TL0 = 0x17;
IE = 0x82;
dis_buf[0] = dis_code[0x1];
dis_buf[1] = dis_code[0x0];
dis_buf[2] = dis_code[0x0];
dis_buf[3] = dis_code[0x2];
dis_index = 0;
TR0 = 1;
while(1);
}
void timer0() interrupt 1
// 定时器0中断服务程序, 用于数码管的动态扫描
// dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
// 选通P2.0口数码管
// dis_buf --- 显于缓冲区基地址
{
unsigned char i;
TH0 = 0xfc;
TL0 = 0x17;
P2 = 0xff; // 先关闭所有数码管
P2= _crol_(0xfe,i); // 位选通值左移, 下次中断时选通下一位数码管
P0 = dis_buf[dis_index]; // 显示代码传送到P0口
dis_index++;
i++;
i&=0x3; // 移了四位以后重新从第一位移位
dis_index &= 0x03; // 4个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
}
///////////////////程序结束///////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -