|
|||||||||||
| 技術(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 |
單片機(jī)為何不能連續(xù)讀取參數(shù) |
| 作者:tananzhu 欄目:技術(shù)交流 |
我做了一個(gè)用TLC549做串行模數(shù)轉(zhuǎn)挽實(shí)驗(yàn),開始我編寫的程序?qū)崿F(xiàn)我的要求,能在運(yùn)行的情況下,讀取變化的參數(shù)(用變阻器來變化它的輸入電壓ANIN),后來我為了用轉(zhuǎn)挽的數(shù)來控制PWM,用示波器來觀察PWM,但后來就不能連續(xù)讀取參數(shù),只能在復(fù)位后讀取參數(shù);我開始的程序如下: CS BIT P1.2 DAT BIT P1.1 CLK BIT P1.0 AD_DATA DATA 30H ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP,#60H ACALL TLC549_ADC MOV R7,#0 DJNZ R7,$ ACALL TLC549_ADC MOV AD_DATA,A mov p0,a sJMP MAIN TLC549_ADC: cLR A CLR CLK CLR CS ;Ñ¡ÖÐTLC549 MOV R6,#8 TLCAD_L1: SETB CLK NOP NOP MOV C,DAT RLC A CLR CLK NOP DJNZ R6,TLCAD_L1 mov r1,#250 djnz r1,$ setb CS setb CLK RET 我的后來程序如下: CS BIT P1.2 DAT BIT P1.1 CLK BIT P1.0 AD_DATA DATA 30H ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP,#60H ACALL TLC549_ADC MOV R7,#0 DJNZ R7,$ ACALL TLC549_ADC MOV AD_DATA,A mov p0,a acall buzz acall dlay clr a sJMP maiN TLC549_ADC: cLR A CLR CLK CLR CS ;Ñ¡ÖÐTLC549 MOV R6,#8 TLCAD_L1: SETB CLK NOP NOP MOV C,DAT RLC A CLR CLK NOP DJNZ R6,TLCAD_L1 mov r1,#250 djnz r1,$ setb CS setb CLK RET dlay: mov r0,#250 ;dlay1: mov r1,#250 djnz r2,dlay2 djnz r1,dlay1 djnz r0,dlay ret buzz: mov r3,a setb p3.5 mov r4,4 djnz r4,$ djnz r3,$ mov r3,a clr p3.5 mov r4,4 djnz r4,$ djnz r3,$ ajmp buzz ret ; END 請(qǐng)各位高手幫我看看,我已經(jīng)思考了好久,沒有結(jié)果啊 我相信你們能找出錯(cuò)誤所在。 |
| 2樓: | >>參與討論 |
| 作者: 微風(fēng) 于 2006/8/12 21:06:00 發(fā)布:
A最好每讀一位都保存一次 |
|
| 3樓: | >>參與討論 |
| 作者: conwh 于 2006/8/12 21:36:00 發(fā)布:
這段程序能夠通過編譯? dlay: mov r0,#250 ;dlay1: mov r1,#250 djnz r2,dlay2 djnz r1,dlay1 djnz r0,dlay ret ========================== DLAY1和DLAY2在哪里? 再說了DJNZ R0,DLAY不是進(jìn)入了死循環(huán)了 * - 本貼最后修改時(shí)間:2006-8-13 0:29:25 修改者:conwh |
|
| 4樓: | >>參與討論 |
| 作者: tananzhu 于 2006/8/13 11:18:00 發(fā)布:
延時(shí)是不是有嚴(yán)格的要求 我做了一個(gè)實(shí)驗(yàn),程序如下: CS BIT P1.2 DAT BIT P1.1 CLK BIT P1.0 AD_DATA DATA 30H ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP,#60H ACALL TLC549_ADC MOV R7,#0 DJNZ R7,$ ACALL TLC549_ADC MOV AD_DATA,A mov p0,a nop nop acall buzz acall dlay sJMP main TLC549_ADC: cLR A CLR CLK CLR CS MOV R6,#8 TLCAD_L1: SETB CLK NOP NOP MOV C,DAT RLC A CLR CLK NOP DJNZ R6,TLCAD_L1 mov r1,#250 djnz r1,$ setb CS setb CLK RET dlay: mov r1,#250 djnz r0,dlay ret buzz: mov r3,a setb p3.5 mov r4,4 djnz r4,$ djnz r3,$ mov r3,a clr p3.5 mov r4,4 djnz r4,$ djnz r3,$ ret ; END 當(dāng)把一付給R1延時(shí),程序有用,當(dāng)把大于1的數(shù)付給R1延時(shí),程序就沒用了。 請(qǐng)各位幫忙看一下,我非常感激 |
|
| 5樓: | >>參與討論 |
| 作者: tananzhu 于 2006/8/13 11:22:00 發(fā)布:
非常感謝 我非常感激上面兩位的提醒,我解決了一個(gè)問題,又發(fā)現(xiàn)了一個(gè)問題,寫在上面,請(qǐng)你們幫我看看 |
|
| 6樓: | >>參與討論 |
| 作者: conwh 于 2006/8/13 13:10:00 發(fā)布:
RE dlay: mov r1,#250 djnz r0,dlay ret ============================ R1沒有什么用處,R0為不確定值 |
|
| 7樓: | >>參與討論 |
| 作者: tananzhu 于 2006/8/13 15:26:00 發(fā)布:
對(duì)不起 不好意思我寫錯(cuò)了,上面的R0就是R1,麻煩你 |
|
| 8樓: | >>參與討論 |
| 作者: conwh 于 2006/8/13 20:08:00 發(fā)布:
那不還是個(gè)死循環(huán)? 應(yīng)為: DLAY: MOV R1,#250 DJNZ R1,$ 或 DLAY: MOV R1,#250 DLAY1: DJNZ R1,DLAY1 RET |
|
| 9樓: | >>參與討論 |
| 作者: dai_weis 于 2006/8/13 20:13:00 發(fā)布:
我只有C語言的程序,你可以參考 * - 本貼最后修改時(shí)間:2006-8-13 20:17:45 修改者:dai_weis http://blog.21ic.com/more.asp?NAME=dai_weis&id=23864 |
|
| 10樓: | >>參與討論 |
| 作者: hotpower 于 2006/8/13 21:49:00 發(fā)布:
被acall buzz搞倒塌了~~~寫匯編不用push/pop實(shí)在暈~~~ |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |