|
發布時間: 2021-2-15 16:07
正文摘要:這段程序是用來檢測是否有設備接入 三個設備有信號時分別給 01H 02H 03H會寫入#0 延時一段時間 如果這段時間內又收到設備信號 會從新給01H 02H 03H寫入#0 超過時間沒 ... |
418854190 發表于 2021-2-17 21:46 請問你根據甚麼數據定出 20H & 21H =200 =延遲5秒? 工作頻率,DJNZ時鐘週期,循環次數...... |
leehk88 發表于 2021-2-17 14:36 我之前給20H21H#200 感覺和給#0的時間沒差別啊 |
418854190 發表于 2021-2-17 07:52 DJNZ指令首先遞減第一個操作數指示的字節,如果結果值不為零,則跳轉到第二個操作數指定的地址。 0 遞減后 是255 |
|
DJNZ 是 "先減一" 不為零則轉移的指令 0-1=? |
dalaoshi 發表于 2021-2-16 17:15 為啥是255 不是放進去的0嗎 |
|
LOOP: DJNZ 20H, LOOP ;這一句跑了255次才到zero,跳下一行 DINZ 21H. LOOP ;這句也會跑255次,而每跑一次都會跳回上面的loop處,直到最后一次zero才跳下一行。 因此第一行得跑255 X 255次= 65025次,才會跳出LOOPING,延時當然很長。 |