Assembly 组件2位7段显示

Assembly 组件2位7段显示,assembly,avr,Assembly,Avr,我有一个小问题,就是不知道该如何工作。基本上我所需要的就是点亮7段显示器两侧的led。它们相互重叠或仅显示在左侧或右侧。如果有人能让我走上正轨就好了。多谢各位 像这样的 ;Port Addresses .equ DDRA =$1A ;Port A Data Direction Register Address .equ PORTA =$1B ;Port A Output Address .equ

我有一个小问题,就是不知道该如何工作。基本上我所需要的就是点亮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

有两种类型的7段LED显示屏。不同之处在于,当对输入应用1或0时,段是打开的。你必须确定你有哪一种,以及PORTA的引脚如何连接到显示器的引线上

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

$7f要么在一个细分市场,要么在一个细分市场之外的所有细分市场$ff正在关闭所有线段或将其全部打开

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


是否希望能够看到分段的交替?如果是这样,您将需要包含某种延迟循环。现在的代码更改显示速度太快,眼睛看不见。

我们不知道LED是如何连接到引脚的。其含义是,它们相互重叠或仅显示在左侧或右侧。这是非常不清楚的。通常,每个7段数字的每个段都分配给端口中的某个位,如果存在点,则可能分配给点的另一位。你需要知道这些作业是什么,然后问题就变得容易了。没有这些细节,这里没有人能提供更多帮助。