資源描述:
《單片機(jī)原理與接口技術(shù) 應(yīng)用型高等教育計(jì)算機(jī)類(lèi) 李明 畢萬(wàn)新 技能訓(xùn)練技能訓(xùn)練7的程序清單.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、技能訓(xùn)練7的程序清單;------------------------------頭文件----------------------------------SW1EQUP1.0;定義SW1SW2EQUP1.1;定義SW2;-----------------------系統(tǒng)復(fù)位程序---------------------------------ORG0000HLJMPMAIN;-------------------------------主程序----------------------------------------------ORG00
2、30HMAIN:MOVSP,#60HMOVSCON,#00H;選擇串行口工作方式0MOVDPTR,#255L:LCALLDISP;顯示JBSW1,L2;判斷SW1是否被按下L1:LCALLDISP;顯示JNBSW1,L1;等待SW1釋放,并刷新顯示器INCDPTR;計(jì)數(shù)器加1LCALLDISP;顯示L2:JBSW2,L;判斷SW1是否按下L3:LCALLDISP;顯示JNBSW2,L3;等待SW2釋放,并刷新顯示器MOVDPTR,#0;清零SJMPL;繼續(xù)檢查按鍵的狀態(tài);---------------------------------顯示子程
3、序--------------------------------------DISP:MOVR6,DPHMOVR7,DPLLCALLH_BCD2;十六進(jìn)制數(shù)轉(zhuǎn)換到BCD碼LCALLSETBUFFER;調(diào)用設(shè)置顯示緩沖區(qū)程序MOVR0,#10H;顯存中數(shù)據(jù)低位的首址MOVR1,#6;顯示器位數(shù)LCALLDISP1;調(diào)用顯示程序RETDISP1:CLRP2.0MOVA,@R0;取待顯示數(shù)字ADDA,#19;偏移量調(diào)整MOVCA,@A+PC;取字型碼MOVSBUF,A;通過(guò)串行口發(fā)送到顯示器JNBTI,$;等待一個(gè)字節(jié)是否發(fā)送完成CLRTI;清發(fā)送
4、完成標(biāo)志INCR0;指向下一個(gè)顯存DJNZR1,DISP1;判斷顯示器是否顯示一遍SETBP2.0NOPNOPCLRP2.0NOPNOPRETTABLE:DB3FH,06H,5BH,4FH;“0”,“1”,“2”,“3”DB66H,6DH,7DH,07H;“4”,“5”,“6”,“7”DB7FH,6FH,77H,7CH;“8”,“9”,“A”,“B”DB39H,5EH,79H,71H;“C”,“D”,“E”,“F”;---------------------二進(jìn)制轉(zhuǎn)換成BCD碼子程序H_BCD2------------------;入口參數(shù):雙
5、字節(jié)二進(jìn)制數(shù)存在R6(高位)、R7(低位)中;出口參數(shù):轉(zhuǎn)換后的BCD碼的存在R3(高位)、R4、R5中H_BCD2:CLRAMOVR3,AMOVR4,AMOVR5,AMOVR2,#10H;轉(zhuǎn)換雙字節(jié)二進(jìn)制數(shù)HB3:MOVA,R7;從高端移出待轉(zhuǎn)換數(shù)的一位送給CyRLCAMOVR7,AMOVA,R6RLCAMOVR6,AMOVA,R5;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2;操作ADDCA,R5DAA;十進(jìn)制調(diào)整MOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,AMOVA,R3ADDCA,R3MOVR3,A;雙字節(jié)二進(jìn)制數(shù)的萬(wàn)位不超過(guò)6
6、不;需調(diào)整DJNZR2,HB3RET;-----------------------------顯示緩沖區(qū)設(shè)置程序--------------------------------------;將要顯示的數(shù)據(jù)以分離BCD碼格式存放在顯示緩沖區(qū)10H~15H(最低位)中SETBUFFER:MOVR0,#15H;取顯示緩沖區(qū)低地址MOVA,R5;取壓縮BCD碼的低位LCALLSPLIT;調(diào)用拆分程序MOVA,R4;取待拆分壓縮BCD碼LCALLSPLIT;調(diào)用拆分程序MOVA,R3;取壓縮BCD碼的高位LCALLSPLIT;調(diào)用拆分程序RETSPLI
7、T:MOVR1,A;取要拆分的壓縮BCD碼LCALLS1MOVA,R1SWAPAS1:ANLA,#0FH;取壓縮BCD碼的低位MOV@R0,A;分離后的BCD碼存入指定單元中DECR0RETDELAY:MOVR2,#80DLY:LCALLDLDJNZR2,DLYRETDL:MOVR6,#50HDL1:MOVR7,#0FFHDL2:DJNZR7,DL2DJNZR6,DL1RETRETEND