哥們給個(gè)兩位顯示的給你瞧瞧吧!!!
/*數(shù)碼管的顯示,動(dòng)態(tài)顯示,數(shù)碼管顯示兩位精確秒計(jì)時(shí),從這個(gè)例子可以學(xué)習(xí)定時(shí)器的使用,也可從這個(gè)例子擴(kuò)展一個(gè)時(shí)鐘程序*/
/*效果:精確的秒計(jì)時(shí),數(shù)碼管顯示兩位計(jì)數(shù),可擴(kuò)展成時(shí)鐘*/
;----------------定義數(shù)據(jù)RAM空間------------------------------- LDB EQU 36H ;定義一個(gè)變量存放顯示值 LCC EQU 37H ;定義一個(gè)變量存放計(jì)數(shù)值 ;-----------數(shù)據(jù)存放---------------------- ORG 0100H TABLE: DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;表:共陽(yáng)數(shù)碼管 0-9 ORG 0000H LJMP MAIN ORG 000BH ;定時(shí)器中斷入口 LJMP TIMER ORG 0200H MAIN: MOV TMOD,#01H ;設(shè)置定時(shí)器1為1模式,即16位計(jì)算模式 MOV TH0,#3CH ;給計(jì)數(shù)寄存器復(fù)值,50毫秒時(shí)間 MOV TL0,#0B0H MOV IE,#82H ;開(kāi)總中斷和T0中斷 SETB TR0 ;啟動(dòng)定時(shí)器0 MOV LDB,#0 ;顯示緩沖清0 MOV LCC,#0 ;計(jì)數(shù)緩沖清0 M1: MOV A,LCC CJNE A,#20,M2 ;計(jì)數(shù)20次50毫秒即為1秒 MOV LCC,#0 INC LDB ;顯示緩存加1 MOV A,LDB ; CJNE A,#100,M2 ;如果加到100,則清0 MOV LDB,#0 M2: MOV A,LDB ;用A來(lái)傳遞數(shù)據(jù)顯示 LCALL DISPLAY LJMP M1 TIMER: INC LCC ;定時(shí)中斷產(chǎn)生,計(jì)數(shù)加1 MOV TH0,#3CH ;重新裝入定時(shí)器值50毫秒 MOV TL0,#0B0H RETI DISPLAY:MOV DPTR,#TABLE ;數(shù)碼管顯示子程序 MOV B,#10 DIV AB CLR P1.0 ;選擇十位數(shù)碼管,即第二位數(shù)碼管,當(dāng)然也可以選擇其它位 SETB P1.1 SETB P1.2 MOVC A,@A+DPTR ;查表輸出定義好的數(shù)碼管段值與P0口,顯示相應(yīng)的0-9 MOV P2,A LCALL DELAY ;延時(shí),停留一會(huì),讓人眼感觸到它的亮度 MOV P2,#0 ;清除數(shù)碼管顯示 SETB P1.0 ;選擇個(gè)位數(shù)碼管,即第一位數(shù)碼管,當(dāng)然也可以選擇其它位 SETB P1.1 SETB P1.2 MOV A,B ;個(gè)位顯示 MOVC A,@A+DPTR ;查表輸出定義好的數(shù)碼管段值與P0口,顯示相應(yīng)的0-9 MOV P2,A LCALL DELAY ;延時(shí),停留一會(huì),讓人眼感觸到它的亮度 MOV P2,#0 ;清除數(shù)碼管顯示 RET DELAY: MOV R7,#10 ;延時(shí)子程序 DJNZ R7,$ RET END
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |