装配2位7段显示

时间:2015-02-27 11:46:21

标签: assembly avr

我有一个理解如何工作的问题。基本上我所需要的只是在7段显示器的每一侧点亮一个LED。它们相互重叠或仅在左侧或右侧显示。如果有人能让我走上正轨就会很好。谢谢。

像这样的东西

  ;Port Addresses 
.equ     DDRA   =$1A               ;Port A Data Direction Register Address 
.equ     PORTA   =$1B               ;Port A Output Address 

.equ     PINB  =$16               ;Port B Input Address 
.equ     DDRB   =$17               ;Port B Data Direction Register Address 

.equ     PINC  =$13               ;Port C Input Address 
.equ     DDRC   =$14               ;Port C Data Direction Register Address 

.equ  PORTD =$12    ;Port D Output Address
.equ  DDRD =$11    ;Port D Dara Direction Register Address

 ;Register Definitions 
.def     temp   =r16                ;Temporary storage register

 ;Program Initialisation 
 ;Initialise Input Ports  
         ldi    temp,$00 
         out    DDRB,temp         
   out DDRC, temp   

 ;Initialise output ports 
         ldi    temp,$FF 
         out    DDRA,temp         
         out    DDRD,temp         


loop:  ldi r17,$7f  ; left side
   out PORTA,r17
   ldi r18, $ff     ; right side
   out PORTA,r18
   rjmp loop

1 个答案:

答案 0 :(得分:0)

有7种LED段显示器有两种类型。区别在于当1应用于输入时段是否打开,或者是零。您必须确定您拥有哪种类型,以及PORTA的引脚如何连接到显示器的引线。

除此之外,操作原理是相同的。数字8有7个段和一个点。这些由您发送PORTA的号码位控制。

$ 7f要么开启一个细分市场,要么只打开一个细分市场。 $ ff正在关闭所有细分或全部打开。

您必须确定要打开的段,以及PORTA的哪些位控制这些段。您会发现$ 7f和$ ff以外的数字是您需要的数字。

您希望能够看到这些片段交替吗?如果是这样,您将需要包含某种延迟循环。现在代码改变显示太快,眼睛无法看到。