刚开始学用51做东西,请大家多多指教。 调试出来输出信号的速度不因计数器脉冲输入的速度而改动。请求各位大哥大姐帮帮忙。先谢谢了。
正在做一个转动周期的玩意儿,硬件测试圈数的输出脉冲和灯的跑动都分别正常,现在就是要用T0的计数功能计圈数,然后算出周期,再用这个周期来调节输出的信号延时,这样在每转一圈的时候都显示同样的字符. #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar t1; bit flag; uchar code a[]={ };//输入的代码
void delay(uint j) { uint n,m; n=j/2; for(m=0;m<n;m++); } void main() { uchar i; uint t; ulong n; TMOD=0x15; TH0=0; TL0=0; TH1=0x0b;// 晶振是6M的 TL1=0xdc; TR0=1; TR1=1; ET0=1; ET1=1; EA=1; while(1) { if(flag==1) { flag=0; n=(TH0*256)+TL0;;//每一秒转n圈,用手转动的一秒不会有很多圈 t=6250/n;//每次输出延时tms,转一圈输出160次 TH0=0; TL0=0; TR0=1; } else { for(i=320;i>0;i-=2) { P0=a; P1=a[i+1]; delay(t); } } } } void timer0(void) interrupt 1 using 0 { } void timer1(void) interrupt 3 using 0 { TH1=0x0b; TL1=0xdc; t1++; if(t1==8) { TR0=0; t1=0; flag=1; } } 程序写的实在是太乱了,谢谢各位了.
|