- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指拨开关与七段显示器控制试验
4-4指撥開關與七段顯示器控制實驗
4-4-1 目的
利用指撥開關控制七段顯示器顯示0~9數字的時間。
4-4-2 電路圖
4-4-3 流程圖
4-4-4程式碼
INCLUDE HT66F70A.INC
MY_DATA .SECTION DATA
DEL1 DB ? ;定義變數位址
DEL2 DB ? ;定義變數位址
DEL3 DB ? ;定義變數位址
COUNT DB ? ;定義變數位址
SEG_PORT EQU PD ;定義SEG_PORT為PD
SEG_PORTC EQU PDC ;定義SEG_PORTC為PDC
DIP_PORT EQU PC ;定義DIP_PORT為PC
DIP_PORTC EQU PCC ;定義DIP_PORTC為PCC
DIP_PORTPU EQU PCPU ;定義DIP_PORTPU為PCPU
ROMBANK 0 MY_CODE
ROMBANK 3 SEG
MY_CODE .SECTION AT 000H CODE
MOV A,0AFH
MOV WDTC,A
SET A,DIP_PORTPU
SET A,DIP_PORTC
CLR SEG_PORTC ;將SEG_PORT規劃為輸出模式
MAIN:
MOV A,OFFSET TAB_7_SEG
MOV TBLP,A ;將TBLP指向表格起始位址
MOV A,10
MOV COUNT,A ;設定COUNT值為10,因為要顯示數字0~9
LOOP:
TABRDL SEG_PORT ;讀取TBLP指示位址,將值送至SEG_PORT
MOV A,DIP_PORT
AND A,08h ;遮蔽DIP_PORT高四位元(僅低位元有效)
CALL TRANS_FACTOR ;呼叫TRANS_FACTOR副程式
CALL DELAY ;呼叫DELAY副程式
INC TBLP ;將TBLP加1
SDZ COUNT ;判斷COUNT減1是否為0,成立則跳至MAIN,
JMP LOOP ;不成立跳至LOOP
JMP MAIN
TRANS_FACTOR: ;TRANS_FATOR副程式
ADDM A,PCL
RET A,5
RET A,10
RET A,20
RET A,30
RET A,50
RET A,70
RET A,90
RET A,100
RET A,120
RET A,140
RET A,160
RET A,180
RET A,200
RET A,220
RET A,240
RET A,0
;====================================
DELAY PROC ;DELAY副程式
MOV DEL1,A
DEL_1: MOV A,30
MOV DEL2,A
DEL_2: MOV A,110
MOV DEL3,A
DEL_3: SDZ DEL3
JMP DEL_3
SDZ DEL2
JMP DEL_2
SDZ DEL1
JMP DEL_1
RET
DELAY ENDP
SEG .SECTION AT 1F00H CODE
TAB_7_SEG: ;七段顯示碼資料區
DC 03Fh
DC 006h
DC 05Bh
DC 04Fh
DC 066h
DC 06Dh
DC 07Dh
DC 007h
DC 07Fh
DC 067H
END
本實驗是利用指撥開關控制七段顯示器顯示速度,而控制延遲時間的指撥開關是隨使用者調動而變,所以採用的延遲副程式是用「ADDM A,PCL」與「RET A,x」指令做搭配的隨機方式進行。
實際上電路只使用了低四位元的DIP_PORT,但先前程式是「SET DIP_PORT」,這樣寫法不是很恰當,應改寫為下列幾行指令較佳。
MOV A
ORM A,DIP_PORTPU
ORM A,DIP_PORTC
文档评论(0)