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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务