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

2022-02-27 04:05:33 字數 10864 閱讀 9962

1樓:匿名使用者

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, #4dsetb tro

cs_t1: cpl p1.0nopnop

nopnop

nopnop

nopnop

nopnop

djnz acc, cs_t1pop acc

retend

2樓:匿名使用者

程式不完整,你把全部程式複製下來吧

51微控制器組合語言程式設計問題(使用keil uvision4)mcs-51

3樓:專注51微控制器

mov r5,#0

mov r6,#0

mov r7,#0

mov dptr,#tab

mov r2,#50

loop:

clr a

movc a,@a+dptr

cjne a,#3ah,lp1

lp1:

jc suzi

cjne a,#'z',lp2

sjmp daxie

lp2:

jnc,xiaxie

daxie:

inc r6

sjmp lp3

xiaoxie:

inc r7

sjmp lp3

suzi:

inc r5

lp3:

inc dptr

djnz r2,loopret

51微控制器組合語言程式設計。

4樓:不亦心

自己動手豐衣足食,

還是好好學習吧,剛開始學,可以自己想嘗試著編寫,有問題再貼出來,請教

你這樣直接要程式的,自己什麼也學不到

keil c51微控制器 c語言程式設計基本語法問題

5樓:匿名使用者

函式宣告是在使用之前麼?

關於goto的問題,很明顯goto是不能跨函式的,label必須是在goto語句的同一個函式內才有效。

6樓:匿名使用者

沒有見過你這樣的寫法啊(loop:)如果是組合語言可以

7樓:圍城

樓上錯了吧,loop: 肯定是可以的,他肯定沒學過c.

不介意的話把檔案發上來吧...這圖看不出來

急求c51微控制器組合語言程式錯誤更改,用的keil軟體不能生成hex檔案,不能匯入proteus 30

8樓:匿名使用者

k1 bit p1.0

k2 bit p1.1

k3 bit p1.2

k4 bit p1.3

k5 bit p1.4

k6 bit p1.5

k7 bit p1.6

k8 bit p1.7

min equ 30h

sec equ 31h

sec100 equ 32h

dis_buf equ 33h

buf_min_h equ dis_buf

buf_min_l equ dis_buf+1

buf_sec_h equ dis_buf+2

buf_sec_l equ dis_buf+3

k_old equ 41h

k_new equ 42h

dis_digit equ 43h

dis_index equ 44h

k_old1 equ 45h

k_new1 equ 46h

flag equ 47h

convert equ 48h

org 0000h

jmp main

org 0003h

ljmp int_0

org 0000bh

ljmp timer0

org 0001bh

ljmp timer1

org 0030h

main:

mov sp,#60h

mov p0,#0ffh

mov p2,#0ffh

mov tmod,#011h

mov th0,#0fch

mov tl0,#017h

mov th1,#0dch

clr a

mov tl1,a

mov convert,#00h

mov convert+1 ,#00h

mov convert+2,#00h

mov convert+3 ,#00h

clr a

mov min,#20

mov sec,a

mov sec100,a

mov buf_min_h,#0a4h

mov buf_min_l,#0c0h

mov buf_sec_h,#0c0h

mov buf_sec_l,#0c0h

mov dis_buf+4,#0c0h

mov dis_buf+5,#0c0h

mov dis_buf+6,#0c0h

mov dis_buf+7,#0c0h

mov flag ,#00h

mov k_old,#00h

beep_bl00: mov r3,#10

mov r2,#200

main1100:

cpl p3.7

lcall delay500

lcall delay500

djnz r2,main1100

cpl p3.6

lcall delay500

lcall delay500

lcall delay500

mov r2,#200

main2100:

cpl p3.7

lcall delay500

djnz r2,main2100

djnz r3,main1100

ljmp start

delay500:

mov r7,#230

loop1:

djnz r7,loop1

retstart: mov dis_digit,#0feh

clr a

mov dis_index,a

setb ea

setb et0

setb tr0

setb it0

setb ex0

setb pt0

main_lp:

call key_prog

sjmp main_lp

key_prog:

call k_scan

mov a,k_new

cjne a,k_old,key_p1

jmp end_proc_key

key_p1:

mov r4,#15

key_p2:

mov r7,#10

call delayms

djnz r4,key_p2

call k_scan

mov a,k_new

cjne a,k_old,key_p3

jmp end_proc_key

key_p3:

jb acc.0,proc_k1

jb acc.1,proc_k2

jb acc.2,proc_k3

jb acc.3,proc_k4

ljmp end_proc_key

proc_k1:lcall beep_bl001

inc min

mov a,min ;

cjne a, #100,update_min21

mov min,#00h

update_min21:

mov a,min

mov b,#10

div ab ; a = min / 10

mov dptr,#dis_code

movc a,@a+dptr

mov buf_min_h,a

mov a,min

mov b,#10

div ab

mov a,b

movc a,@a+dptr

mov buf_min_l,a

sjmp end_proc_key

proc_k2:lcall beep_bl001

dec min

mov a,min

cjne a, #255, update_min1

mov min,#99

update_min1:

mov a,min

mov b,#10

div ab

mov dptr,#dis_code

movc a,@a+dptr

mov buf_min_h,a

mov a,min

mov b,#10

div ab

mov a,b

movc a,@a+dptr

mov buf_min_l,a

sjmp end_proc_key

proc_k3: lcall beep_bl001

push psw

inc flag

mov a ,flag

rrc a

jnc stop

clr p3.6

setb et1

setb tr1

pop psw

sjmp end_proc_key

stop:setb p3.6

clr et1

clr tr1

pop psw

sjmp end_proc_key

proc_k4: lcall beep_bl001

mov r3,convert+1

mov convert+1,convert+3

mov convert+3,r3

mov r3,convert

mov convert,convert+2

mov convert+2,r3

lcall conveter

end_proc_key:

ret; 鍵掃描子程式

k_scan:

mov p1,#0ffh

mov k_new,#00h

mov a,p1

cpl a

anl a,#0f0h

swap a

mov k_new,a

retusing 0

timer0:

; 定時器0中斷服程式, 用於數碼管的動態掃描

push acc

push psw

push ar0

mov th0,#0fch

mov tl0,#017h

mov p2,#0ffh

mov a,#dis_buf

add a,dis_index

mov r0,a

mov a,@r0

mov p0,a

mov p2,dis_digit

mov a,dis_digit

rl a

mov dis_digit,a

inc dis_index

mov r5 , dis_index

cjne r5,#08h,tt

mov dis_index ,#00h

mov dis_digit,#0feh

tt: pop ar0

pop psw

pop acc

reti

timer1:

; 定時器1中斷服務程式, 產生時基訊號10ms

push psw

push acc

push b

push dph

push dpl

mov th1,#0dch

mov tl1,#00h

inc sec100

mov a,sec100

cjne a, #100, end_timer1

mov sec100,#00h

lcall dec_sec

end_timer1:

pop dpl

pop dph

pop b

pop acc

pop psw

reti ;

dec_sec:

dec sec

mov a ,min

jnz obtain

cpl p3.6

mov a ,sec

jnz obtain

mov buf_sec_l,#0c0h

clr tr1

clr et1

beep_bl: mov r3,#10

mov r2,#200

main11:

cpl p3.7

lcall delay500

lcall delay500

djnz r2,main11

cpl p3.6

lcall delay500

lcall delay500

lcall delay500

mov r2,#200

main21:

cpl p3.7

lcall delay500

djnz r2,main21

djnz r3,main11

ljmp obtain

obtain:

mov a,sec

cjne a, #255,update_sec

mov sec,#59

lcall dec_min

update_sec:

mov a,sec

mov b,#10

div ab

mov dptr,#dis_code

movc a,@a+dptr

mov buf_sec_h,a

mov a,sec

mov b,#10

div ab

mov a,b

movc a,@a+dptr

mov buf_sec_l,a

retdec_min:

dec min

mov a,min

cjne a, #255, update_min

mov min,#00h

update_min:

mov a,min

mov b,#10

div ab ; a = min / 10

mov dptr,#dis_code

movc a,@a+dptr

mov buf_min_h,a

mov a,min

mov b,#10

div ab

mov a,b

movc a,@a+dptr

mov buf_min_l,a

retret

; 中斷int0服務程式

int_0:

push psw

push acc

push b

push dph

push dpl

jb k1,rkey1

mov r7,#30

lcall delayms

jb k1,rkey1

ljmp kp1

rkey1 :jb k2,rkey2

mov r7,#30

lcall delayms

jb k2,rkey2

ljmp kp2

rkey2 :jb k3,rkey3

mov r7,#30

lcall delayms

jb k3,rkey3

ljmp kp3

rkey3 : jb k4,rkey4

mov r7,#30

lcall delayms

jb k4,rkey4

ljmp kp4

rkey4: ljmp kp5

kp1: lcall beep_bl001

inc convert

mov a,convert

cjne a,#0ah,kp5

mov convert ,#00h

inc convert+1

mov a,convert+1

cjne a,#0ah,kp5

mov convert+1,#00h

ljmp kp5

kp2: lcall beep_bl001

dec convert

mov a,convert

cjne a,#255,kp5

mov convert,#09h

dec convert+1

mov a,convert+1

cjne a,#255,kp5

mov convert+1,#09h

ljmp kp5

kp3: lcall beep_bl001

inc convert+2

mov a,convert+2

cjne a,#0ah,kp5

mov convert+2 ,#00h

inc convert+3

mov a,convert+3

cjne a,#0ah,kp5

mov convert+3,#00h

ljmp kp5

kp4: lcall beep_bl001

dec convert+2

mov a,convert+2

cjne a,#255,kp5

mov convert+2 ,#09h

dec convert+3

mov a,convert+3

cjne a,#255,kp5

mov convert+3,#09h

ljmp kp5

kp5:lcall conveter

pop dpl

pop dph

pop b

pop acc

pop psw

reti

delayms:

; 延時子程式

dly_lp1:

mov r6,#185

dly_lp2:

nopnop

nopdjnz r6,dly_lp2

djnz r7,dly_lp1

end_dlyms:

ret;蜂鳴器響一聲子程式

beep_bl001: mov r3,#1

putoff: ;

mov r2,#30

main11001:

cpl p3.7

lcall delay500

lcall delay500

djnz r2,main11001

djnz r3,putoff

ret;顯示緩衝區**轉碼子程式

conveter:

mov a,convert

mov dptr,#dis_code

movc a,@a+dptr

mov dis_buf+7,a

mov a,convert+1

mov dptr,#dis_code

movc a,@a+dptr

mov dis_buf+6,a

mov a,convert+2

mov dptr,#dis_code

movc a,@a+dptr

mov dis_buf+5,a

mov a,convert+3

mov dptr,#dis_code

movc a,@a+dptr

mov dis_buf+4,a

ret;查表指令

dis_code:

db 0c0h

db 0f9h

db 0a4h

db 0b0h

db 099h

db 092h

db 082h

db 0f8h

db 080h

db 090h

db 0ffhend

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微控制器組合語言資料 一...

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

51微控制器是襲keil 軟體 關鍵你學過什麼語言?如果學過c語言就用c,上手快。學過其他的高階語言也可以,和c也大都是相通的。要是學過彙編的話就用匯編,畢竟彙編對硬體的操作 建議你還是先學微控制器c語言,這樣不會因為彙編這個攔路虎,而降低你持續學習的熱情。微控制器 組合語言 程式 開發當bai然是...

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

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