實驗時間:2010.05.12
實驗名稱:定時器/計數器應用
實驗目的:1. 學習51單片機內部計數器的使用和編程方法。
2. 進一步掌握中斷處理程序的編程方法。
實驗要求:
1. 用單片機內部定時器中斷方式計時,實現每1秒鐘輸出狀態發生一次反轉
2. P1.0 ●-----------------------●LED0
實驗過程:
org 0
ajmp start
org 000bh
ajmp timer0_isr
org 0100h
start:
mov sp,#70h
mov A,#00000001
mov r7,#16
setb et0
setb ea
setb pt0
mov tmod,#01h
mov tl0,#00h
mov th0,#00h
setb tr0
sjmp $
timer0_isr:
djnz r7,exit
mov r7,#16
cpl A
mov p1,A
exit:reti
end
1.在KEIL軟件內新建工程,輸入如下程序:
2. 保存文件后綴名為ASM
3. 鼠標右鍵點source group,點add files to group ‘source group’
4. 點rebuild all target files運行,看是否有語法錯誤,并修改語法錯誤,生成后綴名為HEX的文件。
5. 連接單片機開發板與電腦。打開燒錄軟件,裝載HEX文件。
6. 將剛才生成的HEX文件燒入單片機學習開發板中,待完成后觀察實驗結果。
實驗結果:
P1.0口所對應的LED燈,亮一秒,暗一秒。符合實驗要求。
實驗三 數據排序、拼拆、轉換練習
實驗時間:2010.05.18
實驗名稱: 數據排序、拼拆、轉換練習
實驗目的: 1、熟悉掌握比較和控制轉移指令的功能及編程;
2、掌握排序的算法
實驗內容: 給出一組隨機數,將此組數據排序,使之成為有序數列。
實驗過程:
在keil軟件錄入以下程序,冒泡排序,升序:
實驗結果:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R0,#04H
LOOP1: MOV R1,#20H
MOV A,R0
MOV R2,A
LOOP2: MOV A,@R1
MOV R3,A
INC R1
SUBB A,@R1
JC LOOP3
MOV A,R3
XCH A,@R1
DEC R1
MOV @R1,A
INC R1
LOOP3: DJNZ R2,LOOP2
DJNZ R0,LOOP1
SJMP $
END
小數排前,大數排后。