當前位置:編程學習大全網 - 編程語言 - 單片機匯編語言8只數碼管顯示1-8

單片機匯編語言8只數碼管顯示1-8

1、?數碼管顯示演示程序:?在8個LED數碼管上依次顯示1,2,3,4,5,6,7,8。引用端口:數碼管數據p0,數碼管控制p2;

DIS_DIGIT?EQU40H

;位選通值,?傳送到P2口用於選通當前數碼管的數值,

;?如等於0xfe時,?選通P2.0口數碼管

DIS_INDEX?DATA41H

;顯示索引,?用於標識當前顯示的數碼管和緩沖區的偏移量

DIS_BUF?DATA50H

;顯於緩沖區起始地址

ORG?0000H

AJMPMAIN

ORG000BH

AJMP?INTT0

ORG0100H

MAIN:MOV?P0,#0FFH;?初始化I/O口

MOV?P2,#0FFH

MOVTMOD,?#02H;定時器0在模式2下工作?

MOVTL0,?#38H;?每200μs產生壹次溢出

MOVTH0,?#38H;自動重裝初值

SETBET0?;使能定時器0中斷

SETB?TR0;啟動定時

SETB?EA?;使能總中斷

MOVDPTR,?#DIS_CODE;?設定顯示初值為1-8

MOVA,#1;初值為1,以後順序加1

MOVC?A,@A+DPTR

MOV?DIS_BUF,A

MOVA,#2

MOVCA,@A+DPTR

MOV?DIS_BUF+01H,A

MOVA,#3

MOVCA,@A+DPTR

MOV?DIS_BUF+02H,A

MOVA,#4

MOVCA,@A+DPTR

MOV?DIS_BUF+03H,A

MOVA,#5

MOVCA,@A+DPTR

MOV?DIS_BUF+04H,A

MOVA,#6

MOVCA,@A+DPTR

MOV?DIS_BUF+05H,A

MOVA,#7

MOVCA,@A+DPTR

MOV?DIS_BUF+06H,A

MOVA,#8

MOVCA,@A+DPTR

MOV?DIS_BUF+07H,A

DISPLAY:MOV?DIS_DIGIT,#0FEH;?初始從第壹個數碼管開始掃描

MOV?DIS_INDEX,#0

SETB?TR0;?啟動定時器0,開始動態掃描顯示

MAIN_LP:NOP

;?主程序循環,可增加其它代碼以改變50H-57H中的值以改變顯示內容

SJMP?MAIN_LP

;=====================================================

INTT0:

;?定時器0中斷服程序,?用於數碼管的動態掃描

PUSH?ACC

PUSH?PSW

MOV?P2,#0FFH;?先關閉所有數碼管

MOV?A,#DIS_BUF;?獲得顯示緩沖區基地址

ADD?A,DIS_INDEX;?獲得偏移量

MOV?R0,A;?R0?=?基地址?+?偏移量

MOV?A,@R0;?獲得顯示代碼

MOV?P0,A;?顯示代碼傳送到P0口

MOV?P2,DIS_DIGIT;?

MOVA,DIS_DIGIT

;?位選通值左移,?下次中斷時選通下壹位數碼管

RLA

MOVDIS_DIGIT,A

INCDIS_INDEX

;?DIS_INDEX加1,?下次中斷時顯示下壹位

ANLDIS_INDEX,#0x07

;?當DIS_INDEX等於8(0000?1000B)時,?清0

POP?PSW

POP?ACC

RETI?

DIS_CODE:?DB?28h,7eh,0a2h,62h,74h,61h,21h,7ah

DB?20h,60h,30h,25h,0a9h,26h,0a1h,0b1h

;0-9和ABCDEF的數碼管顯示代碼

END

  • 上一篇:求壹個C語言編程答案,難度不高
  • 下一篇:linux常用的腳本語言linux常用的腳本
  • copyright 2024編程學習大全網