1樓:
org 0000h
ajmp main
org 0100h
main: mov p1,#0ffh
clr p3.1 ;p3.1清零
mov sp,#30h;堆疊指標後移
wwwo: acall key_of ;呼叫子程式ajmp wwwo;死迴圈
key_of: setb p3.0;p3.0置1mov a,p3;把p3口狀態給累加器a
jnb acc.0,of_on;判斷累加器最低位是否為低電平(也就是p3.0),是就跳的of_on
retof_on: setb p3.0;p3.0置1mov a,p3;把p3口狀態給累加器a
jnb acc.0,ofo;判斷累加器高位是否為低電平(也就是p3.0),是就跳的ofo
retofo: setb p3.0;p3.0置1acall delay;延時
mov a,p3;把p3口狀態給累加器a
jnb acc.0,ofo;判斷累加器高位是否為低電平(也就是p3.0),是就跳的ofo
cpl p1.0;p1.0取反
cpl p3.1;p3.1取反
retdelay: mov r7,#0;延時函式mov r6,#30
del1: djnz r7,del1
djnz r6,del1
程式完成根據p3.0腳的狀態,控制p3.1,p1.0的輸出
2樓:晉安吉
程式通過判斷兩次p3.0的狀態為0應該是一個防抖處理,後面的ofo程式是確定是正確訊號輸入後等待訊號的恢復,然後再響應操作。估計p3.
0應該是連線一個按鍵,通過按鍵的方式控制p3.1和p1.0訊號的翻轉。
3樓:匿名使用者
程式很簡單,主要是通過判斷p3.0腳的狀態,控制p3.1和p1.0的翻轉。
微控制器組合語言填空,微控制器組合語言作業
delay mov r3,20 設定50ms計數迴圈初值 mov tmod,10h 設定時器1方式1mov th1,03ch 置定時器初值mov tl1,0b0h setb tr1 啟動t1lp1 jbc tf1 lp2 查詢計數溢位sjmp lp1 lp2 mov th1,03ch 重新制定時器初...
微控制器彙編程式,微控制器(組合語言)程式
這個是外部擴充套件的ram,fef0h是存資料的地址,mov dptr 0fef0h是給資料指標賦值,movx dptr,a是間接定址,將a中資料送到外部ram的fef0h中,中斷服務程式後面應該有reti,挺容易的,看看書,這例題允許了中斷,給出了中斷處理程式,自己看書學得較為深刻。ofefoh指...
關於微控制器組合語言開頭幾句
0100h的意思是將start 標號後面的指令地址放到100h這個地方,這是說給編譯器聽的.ljmp start 之後的地址到9fh都給別人用.0100意思就是從下面那句話開始,到再次出現 偽 的語句之前的程式全放在從0100h這個地址開始的程式段內。0100h表示主程式的起始地址。前面的類似pc中...