|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
有關C語言的簡單問題,請高手指教。 |
| 作者:action99 欄目:單片機 |
下面是一個延時的程序,在一些資料上看到一個公式:14+(3*(Y-1)+7)*(X-1)。X=10,Y=20。這樣的算出來的結果是590US;但是我用示波器測出來的大約時間是:730US。如何才可以算的準確? void main(void){ init(); while(1){ asm("clrwdt"); RA0=1; delay1(10,20); RA0=0; delay1(10,20); } } void init(){ STATUS=0x00; TRISA=0x00; TRISB=0x00; OPTION=0x06; TMR0=178; INTCON=0x0c0; //TMR0IE=1; //沒有開定時 PORTA=0; PORTB=0; flag=0; } void delay1(x,y){ CHAR z; do{ z=y; do{;}while(--z); }while(--x); } void interrupt //10ms timer0_isr(void) @ 0x10{ TMR0IF=0; TMR0=178; PORTB=0x7e; if(flag_0){ RA1=1; } if(flag_0==0){ RA1=0; } if(flag_0)flag_0=0; else flag_0=1; } |
| 2樓: | >>參與討論 |
| 作者: yuands 于 2006/10/28 10:03:00 發(fā)布:
軟件仿真 |
|
| 3樓: | >>參與討論 |
| 作者: yewuyi 于 2006/10/28 10:22:00 發(fā)布:
請問一下你是怎么用示波器測量了? |
|
| 4樓: | >>參與討論 |
| 作者: action99 于 2006/10/28 11:36:00 發(fā)布:
直接測出RA0的頻率,就可以看到高電位的時間。 直接測出RA0的頻率,就可以看到高電位的時間。 |
|
| 5樓: | >>參與討論 |
| 作者: 蘭天白云 于 2006/10/28 20:24:00 發(fā)布:
以實測為準 C語言寫的延時應以以實測為準,因為編譯有點不理想 |
|
| 6樓: | >>參與討論 |
| 作者: zbo007mm 于 2006/10/29 17:20:00 發(fā)布:
軟件仿真 最好的辦法是軟件仿真,同時也提醒:C的延時很難算得準。 |
|
| 7樓: | >>參與討論 |
| 作者: wolfererer 于 2006/10/29 22:32:00 發(fā)布:
編譯以后看匯編~:) |
|
| 8樓: | >>參與討論 |
| 作者: Xuedong 于 2006/10/30 9:23:00 發(fā)布:
軟仿真是最準的,可以精細調節(jié)呀。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |