基于AVR单片机I/O演示C语言程序
时间:12-01
来源:互联网
点击:
//程序流程:全亮->全灭->PD隔一步进->全亮->全灭->PD隔二步进->全亮->全灭->PB全亮->pb0置位->pb0清零->PB0反转->全灭->(循环)
// Target : M8
// Crystal: 11.059Mhz
#include
#include
//起始全亮
void port_init(void)
{
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x7F;
PORTD = 0x00;
DDRD = 0xFF;
}
//延时函数,大约1ms;
void delay(char tim)
{
unsigned int i,j;
for(i=0;i for(j=0;j<10000;j++);
}
//led全亮
void led_on(void)
{
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
delay(5000);
}
//led全灭
void led_off(void)
{
PORTB = 0xFF;
PORTC = 0xFF;
PORTD = 0xFF;
delay(5000);
}
//PB隔1步进
void pd_1(void)
{
char i;
for (i = 0; i < 8; i++)
{
PORTB = ~(1 < (i));//位操作结合移位操作
delay(5000);
}
}
//PB隔2步进
void pd_2(void)
{
char i;
for (i = 0; i < 8; i+=2)
{
PORTB = ~(1 < (i));//位操作结合移位操作
delay(5000);
}
}
//call this routine to initialise all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialised
}
//
void main(void)
{
init_devices();
while(1)
{
led_on();
led_off();
led_on();
led_off();
pd_1();
led_on();
led_off();
pd_2();
led_on();
led_off();
//赋值(会给所有的位以特定值),使pb0为0,led亮;
PORTB = 0xFE;
delay(5000);
//置位(不影响其他位),使pb0为1,led灭;
PORTB |= 0x01;
delay(5000);
//清零(不影响其他位),使pb0为0,led亮;
PORTB &= ~0x01;
delay(5000);
//反转(不影响其他位),使pb0为1,led灭;
PORTB ^= 0x01;
delay(5000);
}
}
// Target : M8
// Crystal: 11.059Mhz
#include
#include
//起始全亮
void port_init(void)
{
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x7F;
PORTD = 0x00;
DDRD = 0xFF;
}
//延时函数,大约1ms;
void delay(char tim)
{
unsigned int i,j;
for(i=0;i
}
//led全亮
void led_on(void)
{
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
delay(5000);
}
//led全灭
void led_off(void)
{
PORTB = 0xFF;
PORTC = 0xFF;
PORTD = 0xFF;
delay(5000);
}
//PB隔1步进
void pd_1(void)
{
char i;
for (i = 0; i < 8; i++)
{
PORTB = ~(1 < (i));//位操作结合移位操作
delay(5000);
}
}
//PB隔2步进
void pd_2(void)
{
char i;
for (i = 0; i < 8; i+=2)
{
PORTB = ~(1 < (i));//位操作结合移位操作
delay(5000);
}
}
//call this routine to initialise all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialised
}
//
void main(void)
{
init_devices();
while(1)
{
led_on();
led_off();
led_on();
led_off();
pd_1();
led_on();
led_off();
pd_2();
led_on();
led_off();
//赋值(会给所有的位以特定值),使pb0为0,led亮;
PORTB = 0xFE;
delay(5000);
//置位(不影响其他位),使pb0为1,led灭;
PORTB |= 0x01;
delay(5000);
//清零(不影响其他位),使pb0为0,led亮;
PORTB &= ~0x01;
delay(5000);
//反转(不影响其他位),使pb0为1,led灭;
PORTB ^= 0x01;
delay(5000);
}
}
AVR单片机IO演示C语言程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)