⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 程序清单与注释.txt

📁 单片机源程序精华包
💻 TXT
字号:
;按键为常开按键,按键抬起时,单片机管脚为高电平;按键按下,单片机管脚为低电平
;低电平所对应的LED将被点亮,由硬件连接方式决定

.include "m16def.inc"   ;文件头,其中包含ATmega16芯片的硬件资源定义,针对ATmega16的
                        ;程序一般需要有此指令。
.org  $0000             ;org是一条伪指令,表示随后程序的起始位置。即表示下条指令
                        ;"rjmp	RESET"位于程序存储器的$0000地址
	rjmp	RESET		        ;单片机复位后从$0000开始执行程序,在这里放一条跳转指令,
	                      ;跳转到主程序开始的地址
	

.org $0020	            ;$0000地址之后是中断向量区,跳过中断区。中断与中断向量将在
                        ;以后解释,可以参考光盘中ATmega16的数据手册。
RESET:

	ldi	r16,high(RAMEND) 
	out	SPH,r16	          
	ldi	r16,low(RAMEND)	 ;设置堆栈,一般将堆栈设置到RAM的结尾。
	out	SPL,r16          ;在自己编写程序时,可以使用以上代码

	ldi r16,0b11111111   
	out DDRA,r16
	out DDRC,r16
	out DDRD,r16         ;设置PA,PC,PD端口全部为输出
	
	ldi r16,0b11111110;
	out DDRB,r16         ;设置PB0为输入,PB0管脚连接按键

	ldi r16,0b11111111;
	out PORTA,r16        ;PA端口全部输出高电平,LED熄灭
	out PORTC,r16        
	out PORTD,r16		     ;PC端口,PD端口输出高电平
	out PORTB,r16        ;PB1~PB7输出高电平,PB0为输入,且打开内部上拉
	                     ;端口的初始化完成。
	
	sec                  ;置进位C为1,为LED移位做准备

MAIN:
  ldi r16,0b11111111
	out PORTA,r16        ;关闭所有的LED

	ldi r20,0b11111110   ;低电平点亮LED;r20用来存储输出状态

	in r16,PINB
	sbrc r16,0           ;判断PB0是否为低电平,即按键是否按下 
	rjmp MAIN            ;按键没有被按下,继续检测PB0   
LEDPLAY:  
	out PORTA,r20        ;按键被按下,点亮相应的LED
	call DELAY           ;点亮持续一段时间
	rol r20              ;r20往左循环一位,即下一位LED亮的状态
	
	in r16,PINB          ;继续检测开关状态,
	sbrc r16,0           ;判断PB0是否为低电平,即按键是否按下 
  rjmp MAIN            ;没有按下,说明按键已经抬起,回到初始状态
  rjmp LEDPLAY         ;按键按下,继续循环点亮
	
	                     ;延时子程序
DELAY:
    ldi r17,0x03 	     ;设置延时子程序参数
    ldi r18,0xff
	  ldi r19,0xff
DELAY1:
	  dec r18          	  ;r18减去1
    brne DELAY1	        ;不为0转DELAY1;为0按顺序执行
    dec r19		          ;r19减去1
    brne DELAY1	        ;不为0转DELAY1;为0按顺序执行
    dec r17		          ;r17减去1
    brne DELAY1	        ;不为0转DELAY1;为0按顺序执行,延时程序结束,返回主程序
    ret		            ;子程序返回		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -