#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit CP=P2^1;sbit R=P2^0;sbit T=P3^2;uint num,tt,vollce,flog;uchar wx[8]={0x00,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0 };//共阴数码管位选uchar dx[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};//共阴数码管段选uchar table[4]={0,0,0,0}; void delay()//延时函数 { uchar i,j; for(i=1;i>0;i--) for(j=110;j>0;j--); } void pro()//分离函数 { table[0]=vollce/1000; table[1]=(vollce%1000)/100; table[2]=(vollce%100)/10; table[3]=vollce%10; } void display()//显示函数 { uchar i; for(i=0;i<4;i++) { P1=0x00; P2=dx[table[i]]; P1=wx[i]; delay(); } } void pz()//中断配置函数 { R=0; _nop_(); CP=0; _nop_(); R=1; _nop_(); CP=1; _nop_(); T=1; TMOD=0x1e; TH1=(65536-49702)/256; TL1=(65536-49702)%256; IE=0x8a; IT0=1; TR0=1; TR1=1; } void main() { while(1) { pz(); while(flog!=1); TR0=0; TR1=0; pro(); display(); } } void timer1() interrupt 1 //定时器中断 { TH1=(65536-49702)/256; TL1=(65536-49702)%256; tt++; if(tt==20) { tt=0; flog=1; } }最近在看单片机,要求用555定时器产生一个频率为1KHz的方波,然后利用51单片机的定时器T0计数,T1定时,然后用共阴数码管显示出该方波的频率,我们的程序哪里有问题?为什么会无法显示?求大神告诉我原因,最好能帮我改一下,谢谢!
我在里面设置的flog是标志位,进入中断后标志位变1,如果flog不等于1,就等待直到flog=1后再向下进行
追答少年你没弄明白吧 while(条件) 满足条件运行while循环 flog默认是0 当flog不等于1 满足条件往下执行
算了当我说这么多白说