close
標題
8051程式的語法錯誤?
問題
我目前正在寫8051控制步進馬達的程式指令碼,突然在延遲時間的部份出現了錯誤?我是照著書上面打的指令如下movtl0,#<(2**16-10000).mod.32movth0,#>(2**16-10000)/32有錯誤的地方應該是(2**16-10000)這部份但是我不知道是要怎麼改,麻煩大家告知一下謝謝更新:我把延遲時間的部份貼上來這樣比較容易了解問題原因Delay_10ms:movtmod,#00000001bmovtl0,#<(2**16-10000).mod.32movth0,#>(2**16-10000)/32setbtr0Timer_wait:jbctf0,Timer_OkjmpTimer_waitTimer_Ok:djnzr7,Delay_10msclrtr0retend
最佳解答
movtl0,#<(2**16-10000).mod.32 movth0,#>(2**16-10000)/32 這兩行我用2500AD的編譯器是沒發生錯誤 但是這兩行的運算用法有點怪怪的 第一行看起來像是要取出除以32之餘數 第二行看起來像是要取出除以32之商數 可是在算式最前都用了 < 及 > 這< 及 > 是用來取出算式結果的低位元組與高位元組 所以看起來用法不合邏輯 合理的算式,要不是應該為 movtl0,#(2**16-10000).mod.32 movth0,#(2**16-10000)/32 或者是 movtl0,#<(2**16-10000)/32 movth0,#>(2**16-10000)/32 你必須要了解你的程式要得到什麼運算結果,才知道算式要怎樣寫 2007-08-28 08:17:24 補充: 如果是delay 10mS,最後式子應該是 movtl0,#<(2**16-10000) movth0,#>(2**16-10000)
其他答案
或許你的組譯器沒有支援這部份的運算,不過你的式子真的有點怪,所以你還是用計算機直接算出計時10ms所需的TH0,TL0的值,這樣反而會比較容易些
以上文章來自奇摩知識家,如有侵犯請留言告知
https://tw.answers.yahoo.com/question/index?qid=20070826000015KK10198
263EE75ACB693161
文章標籤
全站熱搜
留言列表