微控制器(組合語言)需要的軟體,微控制器(組合語言)程式

2021-04-20 12:56:57 字數 7277 閱讀 4958

1樓:i多多問題多多

51微控制器是襲keil 軟體

2樓:匿名使用者

關鍵你學過什麼語言??如果學過c語言就用c,上手快。學過其他的高階語言也可以,和c也大都是相通的。要是學過彙編的話就用匯編,畢竟彙編對硬體的操作

3樓:匿名使用者

建議你還是先學微控制器c語言,這樣不會因為彙編這個攔路虎,而降低你持續學習的熱情。

微控制器(組合語言)程式

4樓:匿名使用者

開發當bai然是用c,又快又易懂好維

du護,但是想要優zhi化程式dao還是要懂彙編的,要不然實回現同樣一個功能答的程式,好的程式設計師可以把程式設計得又短又快,而不做優化的可能會又臭又長,2k以下可以搞定的,你非要搞到4k以上去那最終產品的成本每個至少會相差幾毛到一兩塊錢,而且成本升高時質量卻是下降的,這樣當然就不好了,所以我個人認為做微控制器程式設計,應當是彙編和c都會才是最好的,次一點的是會c,且能大致看懂彙編,可以幫助優化c程式,

只會彙編,一個程式開發下來,得花幾周到幾個月,開發成本太高了,不值得只會c完全不懂彙編,那也是很難做出高質量的微控制器程式的

5樓:匿名使用者

程式中有ret語句時表來明該程源序段是一個子bai程式,且第一條語句必

du須有標zhi號(程式中沒有),可在主程式或dao其它子程式中的lcall (或acall)語句對其進行呼叫,返回時返回到呼叫語句的下一條指令。

若這是一個完整的程式,不能用ret指令,一定要用等待(結束)指令sjmp $ 。

6樓:沙裡波特

你寫的,是一個子程式。

末尾的 ret,是返回到主程式去。

微控制器組合語言 200

7樓:匿名使用者

200人民幣還可以做!

8樓:九州天極之光

解決是能解決.但是這個分數不值得花兩三個小時.

9樓:匿名使用者

這麼高難度的題目只能私聊才能解決問題。

10樓:匿名使用者

;程式實現功能

;西南北路口直行與轉彎交替通行,數碼管顯示直行通行倒計時,紅綠黃燈顯示包括人行道在內的道路交通狀態。

;某一方向道路擁擠時,可以人工控制調節東西南北方向通行時間。

;緊急情況時,各路**通燈顯示紅燈,數碼管保持資料不變。

;工作暫存器及儲存單元分配

;1.工作暫存器

;r2設定為定時器定時中斷次數,r6、r7用於延時程式中的暫存器

;2.片記憶體儲單元

;30h、31h作為兩組數碼管顯示資料儲存單元;32h、33h作為交通燈初始狀態儲存單元

;40h、41h作為交通燈顯示資料儲存單元

;3.標誌位

;00h:南北通行標誌位 ; 01h:東西通行標誌位;02h:緊急事件標誌位

; *** *** ***

snf   equ  00h             ; 南北通行標誌位

ewf   equ  01h            ; 東西通行標誌位

urf   equ  02h             ; 緊急事件標誌位

org   0000h

ljmp  main                 ; 上電轉主程式

org   000bh                ; 定時中斷入口

ljmp  dszd

org   0003h                ; 緊急中斷入口

ljmp  urzd

org   0030h

main: lcall init           ; 呼叫初始化子程式

loop: lcall dis            ; 迴圈執行顯示子程式

ajmp  loop

; *** *** ***   初始化程式

init: setb   snf

setb   ewf

setb   urf

mov   r2,#20              ; 定時器中斷20次為1s

mov   tmod,#01h      ; 初始化定時器

mov   tl0,#0b0h

mov   th0,#3ch

setb  ea                      ; 開定時中斷與緊急中斷

setb  et0

setb  tr0

setb  ex0

setb  it0                    ; 設定中斷程控方式

mov   dptr,#tab      ; 數值首地址放入dptr中

mov   40h,#40           ; 東南西北通行時間設定

mov   41h,#40

mov   30h,#40           ; 通行時間初始化

mov   31h,#60

mov   p0,#4ch        ; 初始化時南北通行並把交通燈狀態分別放在32h和33h中

mov   32h,#4ch

mov   p2,#15h

mov   33h,#15h

ret; *** *** ***   顯示子程式

dis:  mov   p3,#0dfh       ; 選中南北方向的十位數碼管

mov   a,30h               ; 把顯示資料送人數碼管顯示

mov   b,#10

div   ab

movc  a,@a+dptr

mov   p1,a                 ;

lcall d1ms

mov   p3,#0efh         ; 選中南北方向的個位數碼管

mov   a,b                  ; 送入數碼管顯示

movc  a,@a+dptr

mov   p1,a

lcall d1ms

mov   p3,#7fh        ; 選中第東西方向的十位數碼管

mov   a,31h            ; 送入數碼管顯示

mov   b,#10

div   ab

movc  a,@a+dptr

mov   p1,a

lcall d1ms

mov   p3,#0bfh       ; 選中第東西方向的個位數碼管

mov   a,b

movc  a,@a+dptr

mov   p1,a

lcall d1ms

setb  p3.0

setb  p3.1

jnb   p3.0,dis_s     ; 查詢是否第一個按鍵按下

jnb   p3.1,dis_e     ; 查詢是否第二個按鍵按下

ajmp  dis_r          ; 沒有鍵按下則返回

dis_s:lcall d5ms           ; 按鍵去抖

jnb   p3.0,dis_sn

ajmp  dis_r

dis_sn:mov   40h,#50       ; 對通行時間從新分配,南北通行時間加長

mov   41h,#30

ajmp  dis_r

dis_e:lcall d5ms              ; 按鍵去抖

jnb   p3.1,dis_ew

ajmp  dis_r

dis_ew:mov   40h,#30       ; 東西通行時間加長

mov   41h,#50

dis_r:ret

; *** *** ***   定時中斷處理程式

ds_c: ljmp  ds_r            ; 接力跳轉

dszd: push  acc            ; 保護現場

push  psw

clr   tr0                   ; 關定時器及中斷標誌位並重新賦值

clr   tf0

mov   tl0,#0b0h

mov   th0,#3ch

djnz  r2,ds_c           ; 判斷1m時間是否到達

mov   r2,#20            ; 到達重新賦值

dec   30h                  ; 南北方向通行時間減一

mov   a,30h             ; 把減一後的時間送入顯示儲存單元

; *** *** ***   南北通行到達最後4秒時黃燈閃爍

ds_10:cjne  a,#4,ds_11     ; 如果通行時間剩餘4秒

jnb   snf,ds_11           ; 判斷是否是南北通行

mov   p0,#8ah

mov   32h, #8ah         ; 把交通燈狀態存入儲存單元(後面類似)

ds_11:cjne  a,#3,ds_12      ; 不是剩餘3秒,返回

jnb   snf,ds_12            ; 不是南北通行時間,返回

mov   p0,#88h

mov   32h, #88h

ds_12:cjne  a,#2,ds_13

jnb   snf,ds_13

mov   p0,#8ah

mov   32h, #8ah

ds_13:cjne  a,#1,ds_14

jnb   snf,ds_14

mov   p0,#88h

mov   32h, #88h

; *** *** ***

ds_14:jnz   ds_ne          ; 通行時間沒有結束轉向改變東西方向的數碼管

cpl   snf                  ; 如果通行時間結束則對標誌位取反

jnb   snf,ds_1          ; 判斷是否南北通行

mov   30h,40h          ; 是,點亮相應的交通燈

mov   p0,#4ch

mov   32h,#4ch       ; 儲存交通燈狀態

mov   p2,#15h

mov   33h, #15h      ; 儲存交通燈狀態

ds_ne:dec   31h             ; 東西方向通行時間減一

mov   a,31h             ; 把通行剩餘時間送入顯示儲存單元

; *** *** ***   東西方向通行時間剩餘4秒鐘黃燈閃爍(程式註釋與南北方向類似 略)

ds_20:cjne  a,#4,ds_21

jb    ewf,ds_21

mov   p0,#51h

mov   32h, #51h

ds_21:cjne  a,#3,ds_22

jb    ewf,ds_22

mov   p0,#41h

mov   32h, #41h

ds_22:cjne  a,#2,ds_23

jb    ewf,ds_23

mov   p0,#51h

mov   32h, #51h

ds_23:cjne  a,#1,ds_24

jb    ewf,ds_24

mov   p0,#41h

mov   32h, #41h

; *** *** ***

ds_24:jnz   ds_r             ; 東西方向時間沒有結束,返回

cpl   ewf                  ; 對通行狀態取反

jnb   ewf,ds_2         ; 東西方向通行時間到來,跳轉

mov   31h,#80          ; 東西方向通行結束,重新顯示時間

mov   p0,#89h          ; 點亮相應的交通燈

mov   32h, #89h

mov   p2,#29h

mov   33h, #29h

ajmp  ds_r

ds_1: mov   30h,#80          ; 南北通行時間結束,重新對顯示儲存單元賦值

mov   p0,#89h             ; 執行轉彎狀態1

mov   32h, #89h

mov   p2,#26h

mov   33h, #26h

ajmp  ds_ne

ds_2: mov   31h,41h         ; 東西方向開始通行,賦值予顯示儲存單元

mov   p0,#61h            ; 點亮相應的交通燈

mov   32h, #61h

mov   p2,#15h

mov   33h, #15h

ds_r: setb  tr0

pop   psw                  ; 恢復現場

pop   acc

reti

; *** *** ***   緊急中斷處理程式

urzd: push  acc             ; 保護現場

push  psw

clr   ie0                     ; 清除中斷標誌位

clr   tr0                    ; 關定時器

cpl   urf                   ; 緊急事件標誌位

jb    urf,ur_con       ; 緊急結束;跳轉

mov   p0,#49h           ; 各路口燈全顯示紅燈亮

mov   p2,#15h

ajmp  ur_r

ur_con:setb  tr0            ; 恢復正常交通

mov   a,32h

mov   p0,a

mov   a,33h

mov   p2,a

ur_r: pop   psw             ; 恢復現場

pop   acc

reti

; *** *** ***   查表指令0,1,2,3,4,5,6,7,8,9

tab:  db  3fh,  06h,  5bh,  4fh,  66h,  6dh

db  7dh,  07h,  7fh,  6fh

; *** *** ***   延時5ms與1ms

d5ms:  mov    r7,#5

d1ms:  mov    r7,#10

mov    r6,#50

l1:    djnz   r6,$

djnz   r7,l1

retend

51微控制器組合語言例項,51微控制器組合語言資料

其他沒要求了?要是這樣,隨便寫寫的呀。清零程式 org 0000h ljmp start org 0030h start mov r7,mov r0,30h clr aloop mov r0,a inc r0 djnz r7,loopend 我的部落格上有,你可以去看看。51微控制器組合語言資料 一...

微控制器彙編程式求解,微控制器 組合語言編寫

嘿嘿 還是俺來幫你看看吧。1 原因找到了 你在第二段程式中 少了一條指令 使你的流水燈流到迴圈2就斷了。加上ljmp three 就可以跳轉到第三段流水燈控制程式上了。2 具體就是加在第二段程式的 cjne a,02h,loop3 指令的下面。即修改後 應如下 cjne a,02h,loop3 lj...

KEIL C51微控制器組合語言程式設計問題

name cs t pr?cs t?cs t segment code public cs t rseg pr?cs t?cs t以上是什麼意思 編譯軟體 肯定 不認 以下程式 應該 可以編譯 cs t push acc 這程式看不出起什麼作用。mov th0,00hmov tl0,00hmov a...