看板 NTUBIME-102 關於我們 聯絡資訊
大家好 我是今天講解8051程式的宗誠 組合語言與C++有許多不同處,可能很多人不能迅速的適應 但相信人能很快進入狀況的人也不在少數 而目前主要負責帶領大家的學長姊只有四位,且星期二、三有一、兩位學長會無法出席 教學人力相當吃緊,需要大家小組互助,甚至跨組幫忙也沒關係 只要組內有同學不太瞭解情況 例如:看不懂程式、不知道電路在幹麼 希望懂的人能先停下腳步,以教會組員為優先 因為這只是在學習,沒有任何競賽意味在裡面 較快完成的小組,可能只是獲得上天眷顧,沒有奇怪的錯誤發生 例如:我曾經用過一條電線,能將直流電壓轉換成三角波電壓,這根本是超自然現象! 因此衷心希望,大家能跨越組別互相教學、討論 不用急著趕進度~ 有任何疑問可以迅速抓住學長,或是已經完成的同學 千萬別不好意思問人,也別吝嗇教人唷~( 當然希望問與教的人態度也都不要太差啦 ) 最後幫大家複習一下 下面是50年後都還應該記住,並且告訴孫子們的常識~ MOV A, P1 ;將後面 P1的值丟給 A,即 A = P1 INC A ;將 A + 1 DEC A ;將 A - 1 CPL A ;把 A的內容反向,即 00111100 -> 11000011 CJNE 的用法: ;Compare Jump Not Equal CJNE A, #20, Not_Equal Equal: ...... ;A = 20的話會進來執行這幾行程式碼 JMP Continue ;記得要用JMP 離開,否則會繼續往下執行程式 Not_Equal: ...... ;A 不等於 20的話會從這裡開始執行程式 ;這裡就不一定要加JMP,不加的話會直接進入Continue Continue: ...... Delay的寫法: 今天花了很久時間講Delay,如果聽不懂的話 至少會看 DJNZ R1, & 這行指令被執行了幾次就好 此例子是執行了 20 * 100 次 Delay: MOV R0, #20 DD1: MOV R1, #100 DJNZ R1, $ ; $ 表示此行程式碼的位址 ;可以改寫成 dd: DJNZ R1, dd ;意思是一樣的 DJNZ R0, DD1 RET ;使用函式記得要加 Return 如果嫌 20 * 100 不夠多,當然可以繼續擴充成 20 * 50 * 100 Delay: MOV R0, #20 DD1: MOV R1, #50 DD2: MOV R2, #100 DJNZ R2, $ DJNZ R1, DD2 DJNZ R0, DD1 RET 另外有非常好用,也最常用的 JB、JNB、JZ、JNZ JB P1.0 Label ;若 P1.0 接腳讀到 5 V 的電壓,將直接跳至 Label 執行程式 ...... ;若 P1.0 接腳讀到 0 V,將往下執行此區域的程式 Label: ...... JNB 剛好相反,是讀到 0 V 的時候會跳,5 V 的時候不跳 JZ Label ;若 A = 0 的話會跳至 Label 執行程式 ...... ;若 A不等於 0的話,將執行此區域的程式 Label: ...... JNZ 剛好相反,是不等於 0的時候會跳 是不是非常簡單呢! 抱歉有點晚 PO文,請大家告訴大家~ ~( ̄▽ ̄)~(_△_)~( ̄▽ ̄)~(_△_)~( ̄▽ ̄)~ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.94.109
nerv3890:水歐 01/18 23:42
paul20:燈泡好有趣!! 01/18 23:45
bw80409:器材問題真的沒辦法~"~真的學到很多東西! 01/18 23:51
pipaho:大家加油!!有問題盡量多問沒關係~(我是教學的學姐) 01/19 00:19
nerv3890:天阿是學姊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 01/19 00:25
lty518:方姊姊~ 01/19 00:36
※ 編輯: skywalker353 來自: 140.112.94.109 (01/19 00:43)