1樓:阿嚦噶禱
建議你先去看幾本書,首先是《微機原理》,裡面有將微控制器部分的,偏硬體一些,然後是《微控制器c51程式設計》馬忠梅版的,偏軟體設計一些。就是先讓你對微控制器的片內結構有個認識,然後再說程式的事情。
org 0000h
ljmp main (跳轉到 main 這個程式段)
org 0023h (確定了序列口的工作方式) 怎麼才能確定?//這裡不是確定了序列口的工作方式,是確定了串列埠中斷的地址對映入口
//從這開始到main前面是中斷子程式
clr ri (對 ri 進行清零 但作用是什麼呢?//作用是手動清除接收中斷標誌位)
mov a, subf (傳送資料給累加器a)
mov p2,a (再將a中的資料給 p2 口 ) 這是一個什麼樣的過程呢? //這個過程是微控制器自己完成的,程式設計師不用關心,是通過資料匯流排走的
reti
org 0040h (0040h 是怎麼確定的?)//這裡的40h是程式人工的定位到rom裡40h開始的地址單元處,你也可以定義在其他有效範圍內
main: mov sp,#5fh (為什麼要設定堆疊指標呢 作用又是什麼呢?//微控制器一般都有一個堆疊,作用是儲存環境變數的,設定堆疊指標的作用是避免資料對衝了)
mov tmod,#20h (這是什麼意思?//tmod是暫存器)
mov th1,#0fdh (同上 //同上)
mov tl1,#0fdh (同上 //同上)
mov pcon,#00h (電源控制暫存器 復位?原因是什麼//這裡不能理解為復位,是設定串列埠波特率是否翻倍的,也是暫存器操作)
setb tr1 (對tr1 置1設定 原因是? //去看暫存器的使用方法)
mov scon,#50h (不知道這是在幹什麼 //暫存器)
setb ea (中斷總開關置1)
setb es (對中斷開關置1 )
sjmp $end
2樓:匿名使用者
0023h 序列口中斷入口地址,序列口中斷時從此地址開始執行程式clr ri 清除接收中斷
mov p2,a 接收的資料送到a,再從a輸出到p2口顯示subf-a-p2
org 0040h主程式應該在中斷入口程式以後,一般0030h以後就可以具體看你的中斷程式用了多少空間
mov sp,#5fh 堆疊指標這個程式好像沒用到,設定誰防止用堆疊的時候把原來的資料覆蓋掉,所以堆疊應該放到一個用不到的地方
mov tmod,#20h 計時器工作模式mov th1,#0fdh 計時器初始值setb tr1開始計時
mov scon,#50h 序列口工作方式其實所有內容書上都有,希望你會喜歡上微控制器
3樓:做而論道
程式雖然簡短,涉及面較廣,在書裡面,涵蓋三~四章的內容。
開始覺得難,慢慢學,不用急。
下面的簡單說明一下,樓主還是應該看書.
org 0000h ;0000h是開機復位後起始地址,這是固定的.
ljmp main ;跳轉到 main 程式段.
;-------------------------------
org 0023h ;0023h是序列口中斷的入口地址,這也是固定的.
;下面寫的就是序列口中斷程式.
clr ri ;ri=1才發生的串列埠中斷,必須清零,否則中斷就沒有個完了.
mov a, subf ;取出串列埠收到的資料.
mov p2,a ;送到p2口,外接led就能顯示.
reti ;中斷程式結束,返回主程式.
;-------------------------------以上幾行是串列埠中斷程式.
org 0040h ;0040h 是怎麼確定的?,離開0023h幾十位元組即可.
main:mov sp,#5fh ;設定堆疊指標,為中斷過程準備儲存地址的空間.
;-------------------------------
mov tmod,#20h ;這是什麼意思?這三條,是設定定時器的工作方式.
mov th1,#0fdh ;(同上) 用來控制波特率.
mov tl1,#0fdh ;(同上).
setb tr1 ;對tr1置1,即為啟動定時器.
;-------------------------------以上四行,是針對定時器的.
mov scon,#50h ;設定序列口的工作方式.
;在這裡指定了用定時器1,控制波特率.
mov pcon,#00h ;這也是用來控制波特率的.
;-------------------------------以上二行,是針對序列口的.
setb ea ;中斷總開關置1,即開放總中斷.
setb es ;串列埠中斷開關置1,即開放串列埠中斷.
;-------------------------------以上二行,是針對中斷系統的.
sjmp $ ;等待中斷的發生.
;如果串列埠收到資料,立即轉到0023h.
;在0023h執行時,遇到reti,就返回到這裡.end
4樓:匿名使用者
org 0000h
ljmp main 跳轉到 main 這個程式段
org 0023h 序列中斷入口地址
clr ri 接收中斷標誌清零
mov a, subf 從串列埠緩衝sbuf讀資料
mov p2,a 把讀到的資料送到p2口
reti
org 0040h 這個地址沒特殊要求30h也可以
main: mov sp,#5fh 設定堆疊指標,因為sp初始化時指向07h,與工作暫存器組重合
mov tmod,#20h 定時器1工作方式1,設定序列通訊波特率
mov th1,#0fdh (同上)
mov tl1,#0fdh (同上)
mov pcon,#00h smod位設成0,波特率不加倍
setb tr1 開定時器1中斷
mov scon,#50h 序列口工作方式1,10位非同步
setb ea 開總中斷
setb es 開序列中斷
sjmp $
end程式功能就是從串列埠接收資料,放到p2口上。
建議樓主好好看看課本....
80c51微控制器的RST引腳有什麼作用?有哪幾種復位方式?復位後的狀態是什麼
風翼殘念 1 rst 引導內部復位程式或電路。可以看到sfr的復位值,在等待時鐘電路穩定工作的同時,提高抗干擾能力,提供有效的重啟方法。目的是再生微控制器。2 復位方法 需要rst保持高電平一段時間,通常通過給rc電路或專用電源監控晶片上電來完成。51微控制器高電平復位。如果 rst 引腳在 2 個...
80C51微控制器片內RAM低儲存單元劃分為哪主要部分 各部分主要功能是什麼
念德臺丁 return k是函式返回值,這是個子函式,處理完後返回給呼叫函式一個處理後的值。k k 1 j 這個是指k左移一位,在或上j,因為j sda,看你的寫法,據我猜測da是一個晶片的埠,這是序列輸入的方式,你要讀取晶片的輸出值 假設某個時候k 0000 0001,假設j這個時候為1,那執行k...
大學80C51微控制器程式設計題,請使用組合語言編寫,謝謝
1 mov a,r1 anl a,0f0h xch a,r2 anl a,0fh orl a,r2 mov r3,a 2 mov r0,30h mov 40h,0 mov 41h,0 mov r2,16 loop mov a,r0 add a,40h mov 40h,a mov a,41h addc...