- 积分
- 874
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2006-10-31
- 精华
|
马上注册,获取阅读精华内容及下载权限
您需要 登录 才可以下载或查看,没有帐号?注册
x
(建议没调试过单片机的朋友,先看第1课)
[原创][winavr单片机教程(1)]用WinAVR和AVR Studio搭建AVR开发环境
http://www.chinafix.com.cn/thread-152960-1-1.html
现在使用WINAVR+AVR Studio做为开发平台的人越来越多,一是方便的移植(几乎不需要修改代码),二是强大的调试、仿真功能,极大的缩短了开发周期。下面是我用M16做一个流水灯的过程。可以看到只要编写几句代码,就可实现流水灯“花样”的变化,这比普通的模拟电路强大的多,并且控制路数没有限制。你也做个好看的图案(比如用一笔一画写几个字)送给自己喜欢的朋友。欢迎大家共同讨论、交流,写出更多的流水灯代码。
一、电路图
(1)M16电路图
(2)控制220V彩灯电路
二、代码
(1)C源码
--------------main.c---------------
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
PORTA=0xFF; // PA口输出全1,LED全灭
DDRA=0xFF; // PA口工作为输出方式
while (1)
{
signed char i,j; //有符号字符取值范围:-128—127,占用一个字节。
//间隔点亮16次
PORTA=0xAA; //0xAA=10101010
for (i=0;i<16;i++) {
PORTA=~PORTA; //0xAA取反后=1010101
_delay_ms(500); //延时500ms,WINAVR库函数
}
//左循环2次
for (i=0; i<2; i++) {
for (j=0; j<8; j++) { //8个LED(0-7位)从右向左依次点亮
PORTA = ~(1<<j); //1左移动j位,再取反(因为是高电平灯灭)。
_delay_ms(500);
}
}
PORTA=0xFF;
//_delay_ms(1000);
//右循环2次
for (i=0;i<2;i++){
for (j=7; j>=0; j-- ) { //最后一次循环,j=-1。(因此变量j必须取signed char)
PORTA = ~(1<<j);
_delay_ms(500);
}
}
}
---------------------------------------------------------------------------
(2)HEX文件:
M16 lamp
lamp.hex
(815 Bytes, 下载次数: 4)
|
|