您好,欢迎来到六九路网。
搜索
您的当前位置:首页1.实验一 存储器块清零

1.实验一 存储器块清零

来源:六九路网
1.实验一 存储器块清零 ORG 000H

START EQU 8000H MOV DPTR,#START; MOV R0,#0; CLR A LOOP:

MOVX @DPTR,A INC DPTR;

DJNZ R0,LOOP; NOP LJMP $ END

2.实验二 数据排序 ORG 0000H LJMP 0030H ORG 0030H MOV R0,#30H MOV A,R0 MOV R1,A

MOV @R1,#06H INC R1

MOV @R1,#04H INC R1

MOV @R1,#01H INC R1

MOV @R1,#02H INC R1

MOV @R1,#05H INC R1

MOV @R1,#07H INC R1

MOV @R1,#03H SORT:MOV A,R0 MOV R1, A MOV R2,#07H MOV A,R2 MOV R5,A CLR F0 DEC R5

MOV A,@R1 LOOP: MOV R3,A

INC R1 CLR C

MOV A,@R1 SUBB A,R3 JNC LOOP1 SETB F0 MOV A,R3; XCH A,@R1 DEC R1 XCH A,@R1 INC R1

LOOP1:MOV A,@R1 DJNZ R5,LOOP JB F0,SORT END

3.实验三 输入输出实验 ORG 0000H LJMP START ORG 0100H START:

MOV P1,#00H MOV A,#01H LOOP:

MOV P1,A ACALL DELAY

RL A AJMP LOOP SJMP $ DELAY:

MOV R0,#00H MOV R1,#00H LL:

DJNZ R0,LL DJNZ R1,LL RET

4.实验四 模数转换实验 mode equ 082h; CS0809 equ 8000h PortA equ 9000h; PortB equ 9001h; PortC equ 9002h CAddr equ 9003h;

org 0

mov dptr, mov a,

movx @dptr,a

5.实验五 外部中断 急救车与交通灯 Flash equ 0 ; LED״̬ STOP equ 1

SR equ p1.0 ; Äϱ±ºìµÆ SY SG

ER EY EG

ljmp

org

setb reti

Start:

mov mov mov

setb clr clr

setb clr clr

clr Loop:

jb

setb clr clr

equ p1.1 equ P1.2 equ P1.3 equ P1.4 equ p1.5 Start 3 STOP SP, #70

TCON, #01h IE, #81h SR SY SG ER EY EG STOP STOP, AllRed SR SY SG ; Äϱ±»ÆµÆ ; Äϱ±ÂÌµÆ ; ¶«Î÷ºìµÆ ; ¶«Î÷»ÆµÆ ; ¶«Î÷ÂÌµÆ ; Äϱ±, ¶«Î÷¾ùºìµÆ ; down edge IT0 ; enable EA, EX0 ; Äϱ±, ¶«Î÷¾ùºìµÆ ; Äϱ±ºìµÆ, ¶«Î÷ÂÌµÆ clr ER clr EY setb EG

mov a, #20 call Delay

jb STOP, AllRed

setb SR ; Äϱ±ºìµÆ, ¶«Î÷»ÆµÆÉÁ clr clr

clr clr clr

clr mov Loop1:

mov mov mov call cpl djnz

jb clr clr setb

setb clr clr

mov call

jb clr clr clr

setb SY SG ER EY EG Flash r7, #9 c, Flash EY, c a, #1 Delay Flash r7, Loop1 STOP, AllRed

SR SY SG ER EY EG a, #20 Delay STOP, AllRed

SR SY SG ER

; Äϱ±Â̵Æ, ¶«Î÷ºìµÆ ; ¶«Î÷ºìµÆ, Äϱ±»ÆµÆÉÁ clr EY clr EG

clr Flash mov r7, #9 Loop2:

mov c, Flash mov SY, c mov a, #1 call Delay cpl Flash djnz r7, Loop2

ljmp Loop

AllRed:

setb SR clr SY clr SG

setb ER clr EY clr EG

clr STOP mov a, #10 call Delay ljmp Loop

Delay: ; ÑÓʱ×Ó³ÌÐò

mov r1, #80H mov r0, #0 DelayLoop:

jb STOP, ExitDelay djnz r0, DelayLoop djnz r1, DelayLoop djnz ACC, Delay ExitDelay: ret

end

6.实验六 串口通讯实验 OUTBIT equ 08002h ; λ¿ØÖÆ¿Ú OUTSEG equ 08004h ; ¶Î¿ØÖÆ¿Ú

IN equ 08001h ; ¼üÅ̶ÁÈë¿Ú

HasRcv equ 20h.0 ; ½ÓÊÕ±ê־λ LEDBuf equ 40h ; ÏÔʾ»º³å RCVBuf equ 50H ; ½ÓÊÕ»º³å

ORG 0000H LJMP START ; ´®ÐпÚÖжϳÌÐò

ORG 0023H JNB TI,S0_R CLR TI NOP

SJMP S0_RET

S0_R: ; ½ÓÊÕÊý¾Ý CLR RI

MOV RCVBUF,SBUF ; ±£´æÊý¾Ý SETB HasRcv ; ÌáʾÊÕµ½Êý¾Ý NOP S0_RET:

RETI

LEDMAP: ; °Ë¶Î¹ÜÏÔʾÂë

db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h

Delay: ; ÑÓʱ×Ó³ÌÐò mov r7, #0 DelayLoop:

djnz r7, DelayLoop djnz r6, DelayLoop ret

DisplayLED:

mov r0, #LEDBuf

mov r1, #6 ; ¹²6¸ö°Ë¶Î¹Ü mov r2, #00100000b ; ´Ó×ó±ß¿ªÊ¼ÏÔʾ Loop:

mov dptr, #OUTBIT mov a, #0

movx @dptr, a ; ¹ØËùÓа˶ιÜ

mov a, @r0

mov dptr, #OUTSEG movx @dptr,a

mov dptr, #OUTBIT mov a, r2

movx @dptr, a ; ÏÔʾһλ°Ë¶Î¹Ü

mov r6, #1 call Delay

mov a, r2 ; ÏÔʾÏÂһλ rr a mov r2, a

inc r0

djnz r1, Loop

ret

TestKey:

mov dptr, #OUTBIT mov a, #0

movx @dptr, a ; Êä³öÏßÖÃΪ0 mov dptr, #IN

movx a, @dptr ; ¶ÁÈë¼ü״̬ cpl a

anl a, #0fh ; ¸ßËÄλ²»ÓÃ

ret

KeyTable: ; ¼üÂ붨Òå db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07h

GetKey:

mov dptr, #OUTBIT mov P2, dph

mov r0, #Low(IN) mov r1, #00100000b mov r2, #6

KLoop:

mov a, r1 ; ÕÒ³ö¼üËùÔÚÁÐ cpl a

movx @dptr, a cpl a rr a

mov r1, a ; ÏÂÒ»ÁÐ

movx a, @r0 cpl a

anl a, #0fh

jnz Goon1 ; ¸ÃÁÐÓмüÈë

djnz r2, KLoop

mov r2, #0ffh ; ûÓмü°´ÏÂ, ·µ»Ø 0ffh sjmp Exit Goon1:

mov r1, a ; ¼üÖµ = ÁÐ X 4 + ÐÐ

mov a, r2 dec a rl a rl a

mov r2, a ; r2 = (r2-1)*4

mov a, r1 ; r1ÖÐΪ¶ÁÈëµÄÐÐÖµ mov r1, #4 LoopC:

rrc a ; ÒÆÎ»ÕÒ³öËùÔÚÐÐ jc Exit

inc r2 ; r2 = r2+ ÐÐÖµ djnz r1, LoopC Exit:

mov a, r2 ; È¡³ö¼üÂë mov dptr, #KeyTable movc a, @a+dptr mov r2, a

WaitRelease:

mov dptr, #OUTBIT ; µÈ¼üÊÍ·Å clr a

movx @dptr, a

mov r6, #10 call Delay call TestKey jnz WaitRelease

mov a, r2 ret

START:

MOV SP, #60H

MOV IE, #0 ; DISABLE ALL INTERRUPT MOV TMOD,#020H ; ¶¨Ê±Æ÷1¹¤×÷ÓÚ·½Ê½2 (8Î»ÖØ×°) MOV TH1, #0F3H ; ²¨ÌØÂÊÏ22400BPS @ 12MHz MOV TL1, #0F3H

ANL PCON,#07FH ; SMOD λÇåÁã orl PCON,#80h

MOV SCON,#050H ; ´®Ðпڹ¤×÷·½Ê½ÉèÖÃ

MOV LEDBuf, #0ffh ; ÏÔʾ 8.8.8.8. mov LEDBuf+1, #0ffh mov LEDBuf+2, #0ffh mov LEDBuf+3, #0ffh mov LEDBuf+4, #0 mov LEDBuf+5, #0 SETB TR1

SETB ES SETB EA ;mov sbuf,a ;jnb ti,$ MLoop:

jb HasRcv, RcvData ; ÊÕµ½Êý¾Ý£¿

call DisplayLED ; ÏÔʾ call TestKey ; ÓмüÈë? jz MLoop ; ÎÞ¼üÈë, ¼ÌÐøÏÔʾ call GetKey ; ¶ÁÈë¼üÂë anl a, #0fh ; ͨѶ¿ÚÊä³ö¼üÂë MOV SBUF,A LJMP MLoop RcvData:

clr HasRcv ; ÊÇ mov a, RcvBuf ; ÏÔʾÊý¾Ý mov b,a

anl a,#0fh ; ÏÔʾµÍλ mov dptr, #LEDMap movc a, @a+dptr mov LEDBuf+5, a mov a,b

swap a ; ÏÔʾ¸ßλ anl a,#0fh

mov dptr, #LEDMap movc a, @a+dptr mov LEDBuf+4, a ljmp MLoop

END

7、试验七 wire 总线实验 ; printer

; ASM for MCS51

dport equ P1 ; Êý¾Ý¿Ú stb equ P3.1 ; ѡͨλ busy equ P3.0 ; æ״̬λ

org 0h

jmp start delay:

mov r6,#0 mov r7,#0 dd: nop

djnz r7,dd djnz r6,dd ret

print: rd_status:

; ¶Á´òÓ¡»ú״̬ jb busy, rd_status ; Èô棬µÈ´ý

mov dport,a ; Êý¾ÝËͳö

setb stb ; Êä³öѡͨÂö³å clr stb

ret start:

mov dptr, #string ; ±»´òÓ¡×Ö´® nextchar:

clr a

movc a,@a+dptr

jnz prtchar ; ×Ö´®½áÊø jmp $ prtchar:

call print

inc dptr ; ÏÂÒ»×Ö·û jmp nextchar nop string:

db 'Hello World!',0dh,0ah

db 'I can print now',0dh,0ah,0ch,0,0 end

8.实验八 直流电机控制实验 ; DC motor

; ASM for MCS51

CS0832 equ 09000h

DC_P equ P1.0 count0 equ 40 count1 equ 41

org 0h jmp start delay:

mov r5,#10 mov r6,#0 mov r7,#0 ddd:

djnz r7,ddd djnz r6,ddd djnz r5,ddd ret read:

mov TMOD, #01 ; 16λ¼ÆÊ± clr TR0

mov TH0, #0

mov TL0, #0

r_0: jnb DC_P, r_0 ; µÈ´ýµÍµçƽÍê r_1: jb DC_P, r_1 ; µÈ´ý¸ßµçƽÍê

setb TR0

r_2: jnb DC_P, r_2 ; µÈ´ýµÍµçƽÍê r_3: jb DC_P, r_3 ; µÈ´ý¸ßµçƽÍê clr TR0

mov count0,TH0 mov count1,TL0 ret start:

mov dptr, #CS0832 mov a, #0ffh movx @dptr, a

call delay call read

mov dptr, #CS0832 mov a, #0c0h movx @dptr, a

call delay call read

mov dptr, #CS0832 mov a, #040h movx @dptr, a

call delay call read

mov dptr, #CS0832 mov a, #00h movx @dptr, a

call delay call read

ljmp $

end

; µÈ´ýµç»úÔËתÎȶ¨ ; ¶Áȡʱ¼ä ; Éè¶Ïµã£¬¹Û²ìÉÏ´Îʱ¼ä ; µÈ´ýµç»úÔËתÎȶ¨ ; Éè¶Ïµã£¬¹Û²ìÉÏ´Îʱ¼ä ; µç»ú·´×ª ; µÈ´ýµç»úÔËתÎȶ¨ ; ¶Áȡʱ¼ä ; Éè¶Ïµã£¬¹Û²ìÉÏ´Îʱ¼ä ; µç»ú·´×ª¼ÓËÙ ; µÈ´ýµç»úÔËתÎȶ¨ ; Éè¶Ïµã£¬¹Û²ìÉÏ´Îʱ¼ä

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务