技術(shù)頻道

      穩(wěn)壓輸出與同步顯示電路的單片機(jī)源程序


      采用AT89C2051控制穩(wěn)壓輸出與同步顯示的電路源程序
      ORG 0000H
      START: AJMP MAIN
      TAB1: DB 128,64,32,16 ;Dn值表格
      TAB2: DB 0C0H,92H,0C0H,0C0H ;數(shù)字0.5.0.0字段代碼表
      TAB3: DB 0B0H,99H,82H,90H ;數(shù)字3.4.6.9字段代碼表
      MAIN: MOV SCON,#0 ;設(shè)串行口模式0
      SETB P3.7 ;接繼電器實(shí)現(xiàn)極性狀態(tài)改變,開(kāi)始置P3.7=1
      SETB P3.4 ;電壓及顯示控制按鈕
      SETB P3.5 ;極性轉(zhuǎn)換按鈕
      BEGIN: MOV SP, #60H
      MOV 23H,#0 ;送輸出P1.7=1的Dn值指針
      MOV 20H,#0 ;小數(shù)點(diǎn)一位指針指向“0”字符(20H是小數(shù)點(diǎn)的指針)
      MOV 21H,#0 ;個(gè)位指針指向“3”字符(21H是個(gè)位數(shù)點(diǎn)的指針)
      ACALL DSP ;調(diào)用顯示、輸出子程序
      NOP
      JNB P3.4,$
      ACALL DEL200
      ;
      KEY1: JB P3.4, KEY2 ;電壓及顯示鍵是否有鍵?
      ACALL DEL10
      JB P3.4, KEY2
      ACALL K1
      ;
      KEY2: JB P3.5, KEY1 ;極性轉(zhuǎn)換鍵是否有鍵?
      ACALL DEL10
      JB P3.5, KEY1
      ACALL K2
      AJMP KEY1
      ;
      DEL10: MOV R6,#0DH ;10ms延時(shí)子程序
      D1MS1: MOV R7,#0FFH
      DLL1: DJNZ R7, DLL1
      DJNZ R6, D1MS1
      RET
      ;
      DEL200: MOV R3, #0FFH ;200ms延時(shí)子程序
      D1MS2: MOV R4, #0FFH
      DLL2: DJNZ R4, DLL2
      DJNZ R3, D1MS2
      RET
      ;
      K1: MOV A,23H ;電壓及顯示鍵處理子程序
      CJNE A, #03H, REL1
      AJMP BEGIN
      REL1: INC 23H
      INC 20H
      INC 21H
      ACALL DSP
      NOP
      JNB P3.4,$
      ACALL DEL200
      NOP
      RET
      ;
      K2: CPL P3.7 ;極性轉(zhuǎn)換鍵處理子程序
      JNB P3.5,$
      ACALL DEL200
      NOP
      RET
      ;
      DSP: MOV R7, #02 ;顯示、輸出子程序
      MOV R0, #20H
      MOV R1, #21H
      MOV DPTR, #TAB2
      MOV A, @R0
      DSP1: MOVC A, @A+DPTR
      MOV SBUF, A
      DSP2: JNB TI, DSP2
      CLR TI
      MOV A, @R1
      MOV DPTR, #TAB3
      DJNZ R7, DSP1
      MOV DPTR, #TAB1
      MOV A, 23H
      MOVC A, @A+DPTR
      MOV P1, A
      RET
      ;
      END
      源程序說(shuō)明
      程序中定義了三個(gè)表TAB1、TAB2、TAB3,分別存放P1口的數(shù)據(jù)、小數(shù)點(diǎn)后一位字符、個(gè)位字符。并且用23H、20H、21H分別作為P1口的數(shù)據(jù)、小數(shù)點(diǎn)后一位字符、個(gè)位字符的指針,指針開(kāi)始時(shí)均指向“0”,即分別對(duì)應(yīng)著128、0C0H、0B0H。
      程序運(yùn)行后,調(diào)用“顯示/輸出子程序”,在“顯示/輸出子程序”中依次執(zhí)行:將字符“0”對(duì)應(yīng)的代碼“0C0H”發(fā)送、將字符“3”對(duì)應(yīng)的代碼“0B0H”發(fā)送、將P1口置為“128”(即表示P1.7—P1.0為10000000)。顯然在“顯示/輸出子程序”中輸出字符和置P1口的數(shù)據(jù)等,用的是查表指令MOVC A,@A+DPTR,DPTR是數(shù)據(jù)指針,查表時(shí)采用DPTR作為基址寄存器,在該指令執(zhí)行前,DPTR中存放表的起始地址(例如MOV DPTR,#TAB2),A的內(nèi)容(用MOV R0,#20H和MOV A,@R0兩條指令完成)作為無(wú)符號(hào)數(shù)與DPTR的內(nèi)容相加得到一個(gè)16位地址,由該地址指出的程序存儲(chǔ)器的單元的內(nèi)容送到累加器A中,再由MOV SBUF,A指令將字符對(duì)應(yīng)的代碼發(fā)送出去,同樣對(duì)P1口數(shù)據(jù)的傳送用指令MOV A,23H和MOVC A,@A+DPTR以及MOV P1,A完成。
      程序在結(jié)束此次調(diào)用“顯示/輸出子程序”后,就反復(fù)掃描P3.4口和P3.5口,隨時(shí)響應(yīng)按鍵S1和S2的操作,如S1按下,則進(jìn)入“S1處理子程序”,即“電壓及顯示鍵處理子程序”;如S2按下,則進(jìn)入“S2處理子程序”即“極性轉(zhuǎn)換鍵處理子程序”。
      在“電壓及顯示鍵處理子程序”中,每執(zhí)行一次該子程序,都是先將三個(gè)指針23H、20H、21H加1,然后調(diào)用“顯示/輸出子程序”,下面的過(guò)程是與開(kāi)始一樣的,只不過(guò),由于指針改變而改變了相應(yīng)代碼,實(shí)現(xiàn)顯示、穩(wěn)壓輸出為“4.5、4.5V”→“6.0、6.0V” →“9.0、9.0V”→“3.0、3.0V”的循環(huán)過(guò)程。注意,當(dāng)23H指針加到03H后,表明電路應(yīng)回到起始狀態(tài),重新以“3.0、3.0V”開(kāi)始,程序用CJNE A,#03H,ACTION1指令來(lái)控制,即當(dāng)A中內(nèi)容等于03H后,程序不會(huì)執(zhí)行標(biāo)號(hào)ACTION1開(kāi)始的程序段,而是轉(zhuǎn)到執(zhí)行標(biāo)號(hào)FW的程序段,回到起始狀態(tài)。
      在“極性轉(zhuǎn)換鍵處理子程序”中,每執(zhí)行一次該子程序,就對(duì)P3.7取反一次,實(shí)現(xiàn)極性轉(zhuǎn)換。




      >>>進(jìn)入儀器商城查看本條信息的發(fā)布人

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 国产一区二区三区免费在线观看| 亚洲无圣光一区二区| 久久一区二区三区免费| 精品在线一区二区| 极品少妇一区二区三区四区| 熟妇人妻系列av无码一区二区| а天堂中文最新一区二区三区| 日本一区二区三区日本免费| 无码国产精品一区二区高潮 | 国产无吗一区二区三区在线欢| 无码人妻精品一区二区三区在线| 不卡一区二区在线| 日韩精品一区二区三区中文字幕| 色一情一乱一区二区三区啪啪高| 天美传媒一区二区三区| 日韩av无码一区二区三区| 日韩免费一区二区三区在线| 国产精品一级香蕉一区| 国模无码视频一区| 一区二区福利视频| 久久青草国产精品一区| 精品无码一区二区三区亚洲桃色| 国产在线视频一区| 国产一区二区三区久久精品| av无码人妻一区二区三区牛牛 | 久久毛片免费看一区二区三区| 濑亚美莉在线视频一区| 国产在线一区二区三区av| 日韩精品免费一区二区三区| 韩国精品福利一区二区三区| 无码少妇一区二区三区芒果| 精品无码国产AV一区二区三区| 欧洲精品一区二区三区| 一区二区三区无码高清| 国产激情无码一区二区三区| 亚州日本乱码一区二区三区| 精品国产一区二区三区www| 国产精品一区二区三区久久| 亚洲视频在线一区二区| 国产一区二区精品久久凹凸| 亚洲制服中文字幕第一区|