實驗時間: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小數排前,大數排后。