|
51單片機(jī)程序做一個(gè)速度加里程的表,里程用1602速度用7段數(shù)碼管顯示,程序大至有形了,其中還有錯(cuò)誤請(qǐng)幫忙發(fā)上外部中斷和定時(shí)器部分程序,顯示部分就不發(fā)了.
void extern_int0() interrupt 0
{
cnt1++; //外部0中斷接收脈沖數(shù)
}
void time0(void) interrupt 1
{
TH0=0xf2; //8M晶振 5ms
TL0=0xfa;
cnt++;
if(cnt==20) //100毫秒中斷
{
cnt=0;
// TR0=0;
// EX1=0;
zhs=cnt2*600/144; //每分鐘轉(zhuǎn)速
ZHS2=zhs*60/1000; //ZHS2顯示每小時(shí)公里數(shù)
// EX1=1;
cnt2=0;
// TR0=1;
}
void extern_int1() interrupt 2
{
cnt2++; //外部中斷1接收的脈沖數(shù)
}
void main()
{
init();
while(1)
{
if(cnt1==50) //50個(gè)脈沖為1米
{
cnt1=0;
jishu2++; //這里液晶顯示的數(shù)據(jù),這里顯示的單位是米
write_sfm2(11,jishu2);
}
display();
}
}
用proteus仿真,外部中斷0和1同時(shí)輸入500HZ脈沖,程序顯示是對(duì)的.里程從0米開始加起
當(dāng)脈沖高于500以上,速度顯示也是對(duì)的,就是里程不對(duì)沒顯示了或顯示幾十就卡住了.
51C語言自學(xué)的,有什么寫的不對(duì)或邏輯上的錯(cuò)誤請(qǐng)指正.
最好是用一個(gè)外部中斷累加計(jì)數(shù),并計(jì)算出速度和里程,里程是從0開始加起來
請(qǐng)朋友幫個(gè)忙這程序怎么改或者這樣的程序要怎么樣寫,最好幫我寫一段計(jì)算部分的.謝謝了
|
|