⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数码显示.c

📁 基于C51的串口通信和外部中断
💻 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 + -