本帖最后由 DDN 于 2013-12-2 09:25 编辑
(初学者学习笔记,高手请飞过~~~)
昨天才考完试,最近都准备考试了,近3个星期前申请的试用板这才有时间来好好玩一玩。。。
我之前系统的学习过51单片机,这还是第一次接触AVR单片机,看着酷酷的板子和漂亮的软件界面,心里一阵新奇。。。
不过,这么好的板子,第一次用,必然会遇到各种问题,然后就各种纠结了。。。。。。
打开软件界面,插上miniUSB,软件就会弹出一个框框,告诉你已经连接上了。
然后找来例程,跑一下,耶,灯亮了呢!!!
然后呢?我想看看到底是哪句话点亮了Led0
最顶层的函数是gpio_set_pin_high();然后我右击,“Goto Implementation”,
出现“#define gpio_set_pin_high(io_id) \
一直到最后,我都无法找到,(恕水平有限)
于是,我决定用汇编 .include "m256RFR2def.inc"
.org $0000 rjmp main
.org $0100 main: ldi r16, $10 ;PB4设置为输出 out ddrb, r16
loop: ldi r16, $00 out portb, r16 ;PB4输出低电平 rcall wait1s ldi r16, $10 ;PB4输出高电平 out portb, r16 rcall wait1s rjmp loop
;---------延时子程序----------- wait1s: clc; ;清零C ldi r18, 0 ;“ldi”立即数传给寄存器,寄存器R18清零
wait1ms: ldi r24, 120 d0: push r24 d1: push r24 d2: dec r24 brne d2 ;判断跳转指令,标志位Z为0,则跳转 pop r24 dec r24 brne d1 pop r24 dec r24 brne d0
inc r18 ;大循环为50次 cpi r18, 50 ;"cpi"立即数比较,若小于,则标志位C置1,否则标志位C清零 brsh wait1ms ;"brsh"判断跳转指令,标志位C为0,则跳转
ret
从汇编代码中,可以直接看到,点亮LED0的指令,非常直观,这种直观对于初学者非常重要。
-----Duino
To be continued~
|