led.avr
来自「这是购买伟纳电子的ME300B单片机开发板所配套的开发程序例程之AVR 实验例程」· AVR 代码 · 共 81 行
AVR
81 行
.INCLUDE "8515DEF.INC" ;CPU配置文件
.ORG $0000
RJMP RESET ;上电复位跳转到主程序
.ORG $0013 ;代码段定位,跳过中断区
RESET:
LDI R16,LOW(RAMEND) ;设置堆栈指针
OUT SPL,R16
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,0B11111111 ;设置PA口为输出端口
OUT DDRA,R16
START:
LDI R17,0B11111110 ;PA0输出低电平,LED0亮。
OUT PORTA,R17
LDI R16,50 ;延时1秒
RCALL DELAY
LDI R17,0B11111101 ;PA1输出低电平,LED1亮。
OUT PORTA,R17
LDI R16,50 ;延时1秒
RCALL DELAY
LDI R17,0B11111011 ;PA2输出低电平,LED2亮。
OUT PORTA,R17
LDI R16,50 ;延时1秒
RCALL DELAY
LDI R17,0B11110111 ;PA3输出低电平,LED3亮。
OUT PORTA,R17
LDI R16,50 ;延时1秒
RCALL DELAY
LDI R17,0B11101111 ;PA4输出低电平,LED4亮。
OUT PORTA,R17
LDI R16,50 ;延时1秒
RCALL DELAY
LDI R17,0B11011111 ;PA5输出低电平,LED5亮。
OUT PORTA,R17
LDI R16,50 ;延时1秒
RCALL DELAY
LDI R17,0B10111111 ;PA6输出低电平,LED6亮。
OUT PORTA,R17
LDI R16,50 ;延时1秒
RCALL DELAY
LDI R17,0B01111111 ;PA7输出低电平,LED7亮。
OUT PORTA,R17
LDI R16,50 ;延时1秒
RCALL DELAY
RJMP START ;循环执行
DELAY:
PUSH R16 ;延时子程序,延时时间由R16调整
DELAY0:
PUSH R16
DELAY1:
PUSH R16
DELAY2:
PUSH R16
DELAY3:
DEC R16
BRNE DELAY3
POP R16
DEC R16
BRNE DELAY2
POP R16
DEC R16
BRNE DELAY1
POP R16
DEC R16
BRNE DELAY0
POP R16
RET
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?