#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; sbit d1=P0^3; uchar num,tt; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6b,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(uint z); void main() { num=0; tt=0; TMOD=0x01;//设置定时器0为工作方式1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断。 ET0=1;//开定时器0中断 //EX0=1;//开外部中断0 //IT0=1;//跳变触发方式。 //TCON=0x01;//对CUP存存器进行操作。同上一方式。 TR0=1;//启动定时器0 wela=1; P0=0xea; wela=0; while(1) { //for(num=0;num<16;num++) if(tt==20) //20是20毫秒 { tt=0; num++; if(num=16) num=0; dula=1; P0=table[num]; dula=0; delay(1000); } } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void exter0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256;//d1=0, tt++;
你是说数码管没有动吧 只是显示第一个数字 ?
这是一个通过定时器来显示变化数字的程序吧 如果不动 最大的可能是定时器没有启动
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |