最近用ADC0808编写的一个小程序,但还有一些问题不懂,请各位前辈指教。 1.在网上看到单片机ALE端口输出频率为内部频率的六分之一,但用在protues里面用示波器仿真,怎么看不出有方波。 2.D触发器分频的原理是什么? 3.在仿真过程中,改变定时器时间长短(输出频率的大小,我是用定时器中断模拟ADC0808所要求的频率),但数码管显示的各位和十位会出现颠倒 例如:将 TH0=(65536-2)/256; TL0=(65536-2)%256; 改为: TH0=(65536-4000)/256; TL0=(65536-4000)%256;
程序: #include<reg52.h> #define uchar unsigned char #define uint unsigned char uchar data1,nums,numg; uchar shiwei[6]={0x40,0x79,0x24,0x30,0x19,0x12}; uchar gewei[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
sbit CLK=P1^0; sbit ST=P1^1; sbit OE=P1^2; sbit EOC=P1^3; sbit SHI=P1^4; sbit GE=P1^5;
void main() { TMOD=0x01; TH0=(65536-2)/256; TL0=(65536-2)%256; TR0=1; ET0=1; EA=1; while(1) { ST=0; ST=1; ST=0; while(EOC==0); OE=1; data1=~P3; OE=0; nums=data1/51; SHI=1; P2=shiwei[nums]; SHI=0; data1=data1%51; numg=data1/5; GE=1; P2=gewei[numg]; GE=0;
} } void t0(void) interrupt 1 { TH0=(65536-2)/256; TL0=(65536-2)%256; CLK=!CLK; }
相关链接:https://bbs.21ic.com/upfiles/img/20095/200952314535335.rar |