|
本帖最後由 fatzeros 於 2012-7-5 01:28 PM 編輯
以最基礎的方式寫七段顯視器測試程序,
基本上是以我上次介紹的學習單片機的進階工具:MCU 8051 IDE來完成的,
使用的是組合語言,以下是程序:
;/*----------------------------------------------------------------------------------------------
; 名稱:STC_15F204EA七段顯示器測試程序
; 編寫:沈大胖
; 日期:2012/07/04
; 修改:
; 內容:使用STC_15F204EA測試共陽七段顯示器,
; 使用P3.6,P3.7,P2.5,P2.4,P2.3,P2.2,P2.1,P2.1為七段之A~G
; 使用P3.1為共陽控制腳
; 模擬前,請先LOAD STC_15F204EA_7SEG_LED.vhc, VirtualHW->load->STC_15F204EA_7SEG_LED.vhc
; 按「F2」啟動模擬,按「F6」開始模擬
;-----------------------------------------------------------------------------------------------*/
;腳位功能定義
SMG_LED EQU P3.1 ;定義七段顯視器控制腳為P3.1
LED_A BIT P2.1
LED_B BIT P3.6
LED_C BIT P2.0
LED_D BIT P2.2
LED_E BIT P2.4
LED_F BIT P2.3
LED_G BIT P2.5
LED_H BIT P3.7
;LED DATA LED_A,LED_B,LED_C,LED_D,LED_E,LED_F,LED_G,LED_H
;程序開始
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: CLR SMG_LED ;主程序段,初始七段顯視器,使SMG_LED為低電位導通
SEG_A: CLR LED_A ;點亮LED_A,使LED_A為低電位點亮
ACALL DELAY ;呼叫延時程序
CPL LED_A ;關閉LED_A,使LED_A為高電位
SEG_B: CLR LED_B
ACALL DELAY
CPL LED_B
SEG_C: CLR LED_C
ACALL DELAY
CPL LED_C
SEG_D: CLR LED_D
ACALL DELAY
CPL LED_D
SEG_E: CLR LED_E
ACALL DELAY
CPL LED_E
SEG_F: CLR LED_F
ACALL DELAY
CPL LED_F
SEG_G: CLR LED_G
ACALL DELAY
CPL LED_G
SEG_H: CLR LED_H
ACALL DELAY
CPL LED_H
SEG_ALL: CLR LED_A
CLR LED_B
CLR LED_C
CLR LED_D
CLR LED_E
CLR LED_F
CLR LED_G
CLR LED_H
ACALL DELAY
CPL LED_A
CPL LED_B
CPL LED_C
CPL LED_D
CPL LED_E
CPL LED_F
CPL LED_G
CPL LED_H
DJNZ R7,SEG_A
AJMP MAIN
;使用遞減暫存器R5及R6達成延時效果,暫存器R4為遞減循環次數
DELAY: MOV R4,#1 ;暫存器R4,循環A次
D1: MOV R5,#1 ;D1段,暫存器R5指定初始值為B,最大至255
D2: MOV R6,#1 ;D2段,暫存器R6指定初始值為C,最大至255
DJNZ R6,$ ;遞減暫存器R6初始值C
DJNZ R5,$ ;遞減暫存器R5初始值B
DJNZ R4,D1 ;遞減暫存器R4初始值A,如不為0時則跳至D1段
RET ;回主程序
END
我想問的是有沒有辦法把不同組的IO腳,當成是同一組來用,
或是這個程序有沒有辦法再簡化一點,
附上MCU 8051 IDE的專案檔,可直接套入並模擬。
STC_15F204EA_七段顯示器測試.zip
(24.17 KB, 下載次數: 73)
|
評分
-
1
查看全部評分
-
|