| 
  |||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
請(qǐng)問各位大蝦單片機(jī)定時(shí)器對(duì)程序的影響??很迷惑啊,求救了 | 
  
| 作者:kinggate 欄目:單片機(jī) | 
各位大蝦幫我看看下面的程序啊,怎么定時(shí)器對(duì)程序的運(yùn)行有影響的? 程序如下: #include<reg51.h> #define uCHAR unsigned CHAR #define uint unsigned int #define uLONG unsigned LONG extern show(uCHAR showdata); uLONG IRcode=0x00000000; //32位的鍵代碼 uCHAR Lcustomcode=0x92; //低八位用戶碼 uCHAR Hcustomcode=0x82; //高---- uCHAR datacode=0xf8; //8位鍵數(shù)據(jù)碼 uCHAR Rdatacode=0x80; //8位鍵數(shù)據(jù)反碼 void delay() { uCHAR i,j,k; for(i=200;i>0;i--) for(j=200;j>0;j--) for(k=5;k>0;k--) ; } void init() { TMOD=0x11; //定時(shí)器0,工作方式1 ; 定時(shí)器1,工作方式1 TCON=0x01; //外中斷0下降沿觸發(fā),(包括TR1=0,TR0=0) TH0=0x3c; //初始化定時(shí)器0,定時(shí)50ms TL0=0xb0; TH1=0x00; //初始化定時(shí)器1 TL1=0x00; EA=1; //開全中斷 ET0=1; //開放T0中斷 ET1=1; //開放T1中斷 EX0=1; //開放外中斷0 } void remoteint() interrupt 0 using 0 //遙控器中斷處理函數(shù) { EX0=0; IRcode=code; //code為讀到的32位的值 Lcustomcode=IRcode; IRcode=IRcode>>8; Hcustomcode=IRcode; IRcode=IRcode>>8; datacode=IRcode; IRcode=IRcode>>8; Rdatacode=IRcode; TR1=1; //開始計(jì)時(shí)????????? EX0=1; } void main() { init(); while(1) { show(Lcustomcode); delay(); show(Hcustomcode); delay(); show(datacode); delay(); show(Rdatacode); delay(); } } 問題就出在TR1=1上,有了這句之后顯示的數(shù)碼管就一閃一閃的了,并且數(shù)據(jù)也不正確,但刪掉這句后,程序就正常,或者一開始就關(guān)閉T1(ET1=0)也沒影響,程序運(yùn)行也正常,難到定時(shí)器的中斷對(duì)程序也有影響嗎? 謝謝各位!  | 
  
| 2樓: | >>參與討論 | 
| 作者: lbx_00 于 2007/4/23 19:36:00 發(fā)布:
         你的定時(shí)器1的中斷服務(wù)程序沒有呀 我看不到你的定時(shí)器1中斷服務(wù)程序,所以,我只能夠猜了。你的顯示應(yīng)該是掃描的,掃貓的速度一定要比0.05s快,但是,我只看到了,你在外中斷0的服務(wù)程序里啟動(dòng)T1,并沒有看到,當(dāng)T1益出后,重新裝入TH1,TL1,和給F1清零,并重起T1,還有,T1中斷服務(wù)時(shí)間過長(zhǎng),也會(huì)影響你的掃描顯示。另外,用c寫的東西,總是有許多東西對(duì)程序員不透明,有的時(shí)候,會(huì)出怪事,也許,你的T1不必全程關(guān)掉,所以,用匯編寫程序的成功率會(huì)高一些,建議用匯編。  | 
  |
| 3樓: | >>參與討論 | 
| 作者: joy晴天 于 2007/4/23 20:05:00 發(fā)布:
         計(jì)時(shí)中段服務(wù)程序呢? 在計(jì)時(shí)中段完成它應(yīng)有的功能和次數(shù)后,關(guān)閉計(jì)時(shí)器,關(guān)閉計(jì)時(shí)使能  | 
  |
| 4樓: | >>參與討論 | 
| 作者: kinggate 于 2007/4/24 9:04:00 發(fā)布:
         謝謝各位大蝦 謝謝各位大蝦, 在加入定時(shí)器中斷函數(shù)后,程序正常了 我原以為沒有用到定時(shí)中斷服務(wù)程序,就不用寫了 在加了個(gè)空的定時(shí)中斷服務(wù)程序后程序就正常了 謝謝!  | 
  |
  | 
    
 
  | 
  
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)  |