/*******************************************************************/ /* TX-1C单片机实验板实验例程 */ /* 2007年8月第二期培训班课后习题详解 */ /* 作者:郭天祥 */ /* 邮箱:txmcu@163.com */ /* 网站:www.txmcu.com(天祥电子) */ /*【版权】Copyright(C)天祥电子 www.txmcu.com All Rights Reserved */ /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! */ /* */ /*******************************************************************/ /* 用定时器以间隔500MS在6位数码管上依次显示 0、1、2、3....C、D、E、F,重复。 设时钟频率为12M */ /*********************************************************/ #include //52单片机头文件 #include //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 sbit dula=P2^6; //数码管段选锁存端 sbit wela=P2^7; ////数码管位选锁存端 uchar num,tt; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void main() { num=0; tt=0; TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 dula=1; P0=0x3f; //给段开始送显示0。 dula=0;//关闭段选锁存端,防止开始时出现乱码。 wela=1;//11101010 P0=0xc0; // 打开六个数码管位选 wela=0; while(1) { if(tt==10) //每进入10次中断即为500ms,执行一次显示变化。 { tt=0; num++; if(num==16) num=0; dula=1; P0=table[num]; dula=0; } } } void exter0() interrupt 1 // 定时器0中断 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; }