分支與循環(huán)程序設計_第1頁
分支與循環(huán)程序設計_第2頁
分支與循環(huán)程序設計_第3頁
分支與循環(huán)程序設計_第4頁
分支與循環(huán)程序設計_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗名稱 分支與循環(huán)程序設計 成 績 指導教師 * 專業(yè)班級 * 姓 名 白* 學 號 * 聯系電話 * 一、任務要求1. 熟練掌握Keil環(huán)境下匯編語言程序的調試方法,加深對匯編語言指令、機器碼、尋址方式等基本內容的理解,掌握分支程序和簡單程序的設計與調試方法,了解并行IO口的使用。2. 設有8bits符號數X存于外部RAM單元,按以下方式計算后的結果Y也存于外部RAM單元,請按要求編寫完整程序。 3. 利用51系列單片機設計一個24小時制電子時鐘,電子時鐘的時、分、秒數值分別通過P0、P1、P2端口輸出(以壓縮BCD碼的形式)。P3.0為低電平時開始計時,為高電平時停止計時。設計1s延時子

2、程序(延時誤差小于10us,晶振頻率12MHz)。4. 1)實現4位十進制加、減1計數,千位、百位由P1口輸出;十位、個位由P2口輸出。利用P3.7狀態(tài)選擇加、減計數方式。2)利用P3口低四位狀態(tài)控制開始和停止計數,控制方式自定。二、設計思路1. 先在外部RAM取數,然后判斷該符號數是否為負數,若為負數,則取相反數并存數;若為正數,則接著判斷該數是否大于等于64,若滿足,則求平方并存數,先存低位,后存高位;若小于64,則接著判斷該數是否大于10,若滿足,則求該數的一半并存數;若小于等于10,則取相反數并存數。2. 第一步先編可以延時1S的子程序DELAY;接著判斷P3.O是否滿足開始計數條件,

3、若不滿足,則重復判斷;若滿足,則對時分秒分別賦值,調用延時子程序,判斷是否滿足計時條件,若不滿足,則重復判斷直至滿足;若滿足,則秒鐘自加一,循環(huán),判斷秒鐘循環(huán)滿60次后出循環(huán),對分鐘自加一,然后繼續(xù)循環(huán),最后判斷分鐘循環(huán)滿60次后出循環(huán),對時鐘自加一,然后判斷時鐘循環(huán)滿24則回到初值,時分秒重新賦值并重新開始循環(huán)。3. 判斷P3.7,若為1,則進行加一計數,若為0,則跳轉至另一程序進行減一計數;加一計數中,先取低位P1送A,自加一,送P1,判斷是否有溢出,若有,則取高位P2送A,自加一,送P2,然后回判斷循環(huán);減一計數同理,即先取低位P1送A,自減一,送P1,判斷是否有進位,若有,則取高位P2

4、送A,自減一,送P2,然后回判斷繼續(xù)循環(huán)。三、資源分配12000H 片外RAM存數 2001H 存結果低八位 2002H 存結果高八位 B寄存器 暫存結果高八位2P3.0 存計時判斷位 R0、R1、R2 存延時子程序中各重循環(huán)的循環(huán)次數 R3、R4、R5 存時分秒的循環(huán)次數 P0、P1、P2 存時分秒的輸出值3P1、P2 分別存十進制計數的低兩位、高兩位 P3.7 存計數方式的控制位四、流程圖1、8 bit符號數的判斷與計算 2、時鐘設計 3十進制加減一計數器 五、源代碼 (含文件頭說明、語句行注釋)18 bit符號數的判斷與計算 ORG 0000HLJMP STARTORG 1000HSTA

5、RT: MOV DPTR,#2000H;地址指針賦初值 MOV A,#22MOVX DPTR,A MOVX A,DPTR;取數JB ACC.7,DDCJNE A,#64,AA;若A64,則轉AAAA: JC BB;若A64,則轉BB MOV B,AMUL AB;求A的平方INC DPTRMOVX DPTR,A;存結果低八位INC DPTRMOV A,BMOVX DPTR,A;存結果高八位SJMP $BB: CJNE A,#10,CC;若A10,則轉CC CPL AEE: INC DPTR MOVX DPTR,ASJMP $CC: JC DD;若A10,則轉DD RR A;若A10,則右移一位S

6、JMP EEDD: CPL A INC A SJMP EEEND2時鐘設計 ORG 0000H LJMP START ORG 1000HSTART: JB P3.0,START;若為0,則開始計時RESTA: MOV R3,#24 MOV P0,#00H ;時鐘賦初值LOOP3: MOV R4,#60 MOV P1,#00H ;分鐘賦初值LOOP2: MOV R5,#60 MOV P2,#00H ;秒鐘賦初值LOOP1: ACALL DELAY;調用延時1S子程序LOOP: JB P3.0,LOOP;若為1,則停止計時 MOV A,P2 ADD A,#01H DA A MOV P2,A DJN

7、Z R5,LOOP1;判斷秒鐘是否結束循環(huán) MOV A,P1 ADD A,#01H DA A MOV P1,A DJNZ R4,LOOP2;判斷分鐘是否結束循環(huán) MOV A,P0 ADD A,#01H DA A MOV P0,A DJNZ R3,LOOP3;判斷時鐘是否結束循環(huán) LJMP RESTADELAY: MOV R0,#12 NOPDELAY3:MOV R1,#130DELAY2:MOV R2,#212 NOP NOPDELAY1:NOP DJNZ R2,DELAY1 DJNZ R1,DELAY2 DJNZ R0,DELAY3 RET END3十進制加減計數器 ORG 0000H LJ

8、MP START ORG 1000HSTART:MOV P1,#12H MOV P2,#92HLOOP: ACALL DELAY MOV A,P2 JB P3.7,AA;若為1,則轉AA實現記數加1 ADD A,#99H DA A;實現十進制減1 MOV P2,A JC BB;判斷是否產生借位,若產生,則對高位減1 MOV A,P1 ADD A,#99H DA A MOV P1,A AJMP LOOPAA: ADD A,#01H DA A;實現十進制加1 MOV P2,A JNC BB;判斷是否產生進位,若產生,則對高位加1 MOV A,P1 ADD A,#01H DA A MOV P1,AB

9、B: AJMP LOOPDELAY: MOV R0,#12 NOPDELAY3:MOV R1,#130DELAY2:MOV R2,#212 NOP NOPDELAY1:NOP DJNZ R2,DELAY1 DJNZ R1,DELAY2 DJNZ R0,DELAY3 RET END六、程序測試方法與結果18 bit符號數的判斷與計算1)令片外RAM中數據為642)令片外RAM中數據為223)令片外RAM數據為14)令片外RAM數據為-22時鐘設計1)令P3.0=0,程序按十進制正常運行2)令P3.0=0,暫停計數3)設置斷點觀察延時子程序的延時時間,剛好為1s3十進制加減1計數器1)將P3.7置1,計數器實現加一計數2)將P3.7置0,計數器實現減一計數七、思考題1 實現多分支結構程序的主要方法有哪些?舉例說明。a) 分支地址表法b) 轉移指令表法c) 地址偏移量表法2 在編程上,十進制加1計數器與十六進制加1計數器的區(qū)別是什么?怎樣用十進制加法指令實現減1計數?a) 十進制加1計數器滿十進1,十六進制加1計數器滿16進1,十進制加法需用DA A指令進行調整b) 用ADD A,#99HDA A 指令,即可實

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論