還是關於80C51微控制器的問題!程式如下 我想知道執行出來的結果以及我的那些疑問!在這裡先說句謝謝了

時間 2021-05-07 20:00:39

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...