首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >环形计数器avr汇编器

环形计数器avr汇编器
EN

Stack Overflow用户
提问于 2016-09-20 07:02:46
回答 2查看 1.2K关注 0票数 0

我必须做一个汇编程序。我应该让一个戒指计数器像这样工作:

功能,8个LED:

代码语言:javascript
复制
(0000 000X, 0000 00X0, 0000 0X00, 0000 X000, 000X 0000, 00X0 0000, 0X00 0000, X000 0000)

我做了一个程序,但它的工作原理如下:

代码语言:javascript
复制
(0000 000x, 0000 00xx, 0000 0xxx, 0000 xxxx, 000x xxxx, 00xx xxxx,0xxx xxxx,xxxx xxxx)

有没有人能帮我一个接一个地做LED灯?

我的代码

代码语言:javascript
复制
  .include "m2560def.inc"
ldi r20, HIGH(RAMEND) ; R20 = high part of RAMEND address
out SPH,R2                       ; SPH = high part of RAMEND address
ldi R20, low(RAMEND)   ; R20 = low part of RAMEND address
out SPL,R20     ; SPL = low part of RAMEND address
ldi r20, 0xFF   
out DDRA, r20   
ldi r20, 0b10000001    
out PORTA, r20   
loop_1: ; Begin a loop 
    rcall Delay   
    lsl r20   
    out PORTA,r20   
    cpi r20,0x00   ; 
    breq reset
jmp loop_1  
Delay:  
    inc r16   
    cpi r16,0xFF    
    brne del_1  
ret go back to loop 
del_1:      
    inc r21 
    cpi r21,0xFF  
    brne del_1  
jmp Delay     
reset:
    ldi r20, 0xFF
    out PORTA, r20
ret
EN

回答 2

Stack Overflow用户

发布于 2016-09-20 16:45:53

你的信息有点稀少,所以我必须找出你在做什么:)

据我所知,你使用的是AtMega微控制器

如果'reset‘是关闭所有LED的功能

代码语言:javascript
复制
reset:
    ldi r20, 0xFF
    out PORTA, r20

然后此代码告诉我,端口上的0点亮LED。

代码语言:javascript
复制
lsl r20 

lsl向左移动,插入一个零,这将打开LED,这不是您想要的。

你必须打开最右边的部分(不要问我怎么打开的,我对Atmel并不熟悉)

我会尝试:

代码语言:javascript
复制
sec
rol r20

(这应该设置进位标志,并且rol将其作为1移位到r20中)

票数 1
EN

Stack Overflow用户

发布于 2016-11-04 17:32:59

我不确定“环计数器”,但我想你想做一个运行的发光二极管?如果是,那么这可能会有所帮助

代码语言:javascript
复制
ldi r20,0xff
out PORTA,r20 ;output initialization
ldi r23,1     ;unused registers

loop : ;main loop
out PORTA,i
rcall delay   ; you can use your delay function, i assume its correct
rol r23       ; rotate the value
cpi r23,0     ; this is "reset" when the led reach the 8th 
brne loop     ;back to loop
ldi r23,1     ; reset the value
rjmp loop     ;back to loop

使用rol将更改i的值

初始化:1 (0b0000 0001)

第一个角色:(0b0000 0010)

。。

。。

第7卷:(0b1000 0000)

第8卷:(0b0000 0000) <<-在此处执行重置

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39583346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档