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