1、最简单的AVR程序
来源:互联网 发布:微信淘宝头像图片大全 编辑:程序博客网 时间:2024/05/21 12:39
开机LED闪烁10次,SPEAKER鸣1次,然后PORTA端口接的6盏灯以不同花式闪烁。
※PB2: SPEAKER,用于开机鸣叫
※PB3: LED,用于开机闪烁
/**//*****************************************************
This program was produced by the
CodeWizardAVR V1.24.8d Professional
Automatic Program Generator
?Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 2006-12-30
Author : F4CG
Company : F4CG
Comments:
Chip type : ATmega32
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include <mega32.h>
// Declare your global variables here
/**//* This seems to produce the right amount of delay for the LED to be
* seen
*/
void Delay()
...{
unsigned char a, b;
for (a = 1; a; a++)
for (b = 1; b; b++)
;
}
//-----------------------------------
// 延时程序
//-----------------------------------
void delayms(unsigned char m)
...{
unsigned char a, b;
for (a = 1; a<m; a++)
for (b = 1; b; b++)
;
}
unsigned int k = 0;
void main(void)
...{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
DDRB = 0xFF; /**//* output */
PORTB = 0xFF; /**//* all off */
DDRA = 0xFF; /**//* output */
PORTA = 0xFF; /**//* all off */
for(k=0; k<10; k++)
...{
PORTB = 0xF7;
delayms(100);
PORTB = 0xFF;
delayms(100);
}
PORTB = 0xFB;
Delay();
PORTB = 0xFF;
Delay();
TCCR0 = 0x04;
TCNT0 = 0x06;
while (1)
...{
for(k=0; k<5; k++)
...{
PORTA = ~(1<<k);
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA = ~(1<<k);
delayms(100);
}
for(k=0; k<5; k++)
...{
PORTA &= 0xE0;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xFB;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xE4;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xF5;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xEE;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xEA;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
};
}
// #pragma interrupt_handler Timer0:10
interrupt [8] void Timer0(void)
...{
PORTB = 0xF7;
delayms(100);
PORTB = 0xFF;
delayms(100);
}
This program was produced by the
CodeWizardAVR V1.24.8d Professional
Automatic Program Generator
?Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 2006-12-30
Author : F4CG
Company : F4CG
Comments:
Chip type : ATmega32
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include <mega32.h>
// Declare your global variables here
/**//* This seems to produce the right amount of delay for the LED to be
* seen
*/
void Delay()
...{
unsigned char a, b;
for (a = 1; a; a++)
for (b = 1; b; b++)
;
}
//-----------------------------------
// 延时程序
//-----------------------------------
void delayms(unsigned char m)
...{
unsigned char a, b;
for (a = 1; a<m; a++)
for (b = 1; b; b++)
;
}
unsigned int k = 0;
void main(void)
...{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
DDRB = 0xFF; /**//* output */
PORTB = 0xFF; /**//* all off */
DDRA = 0xFF; /**//* output */
PORTA = 0xFF; /**//* all off */
for(k=0; k<10; k++)
...{
PORTB = 0xF7;
delayms(100);
PORTB = 0xFF;
delayms(100);
}
PORTB = 0xFB;
Delay();
PORTB = 0xFF;
Delay();
TCCR0 = 0x04;
TCNT0 = 0x06;
while (1)
...{
for(k=0; k<5; k++)
...{
PORTA = ~(1<<k);
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA = ~(1<<k);
delayms(100);
}
for(k=0; k<5; k++)
...{
PORTA &= 0xE0;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xFB;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xE4;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xF5;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xEE;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
for(k=5; k>0; k--)
...{
PORTA &= 0xEA;
delayms(100);
PORTA |= 0xFF;
delayms(100);
}
};
}
// #pragma interrupt_handler Timer0:10
interrupt [8] void Timer0(void)
...{
PORTB = 0xF7;
delayms(100);
PORTB = 0xFF;
delayms(100);
}
- 1、最简单的AVR程序
- AVR之最简单外部中断、定时器0、定时器1程序
- 2、一个简单的AVR中断程序
- 一个简单的AVR测试程序
- 最简单的程序
- 最简单的Struts程序(1)
- 最简单的Struts程序(1)
- RA8822液晶模块的AVR程序
- n久前写的avr程序
- AVR 的精确延时程序
- 最简单的win32程序
- 最简单的引导程序
- 最简单的MONO程序
- 最简单的引导程序
- 最简单的win32程序
- 最简单的struts程序
- 最简单的windowsAPI程序
- 最简单的MFC程序
- PetShop之表示层设计
- 程序员修身养性的十大原则
- 设计一个自动编码解码库
- 开设技术blog
- 初用apache.commons.beanutils.BeanUtils
- 1、最简单的AVR程序
- 推荐的一些IT网站论坛
- 活动桌面处理和一个例子
- 线程池的设计与实现
- 2、一个简单的AVR中断程序
- 发布两个ASP.NET控件ComboBox 和DateControl
- ASP.NET正则表达式查找字符串中重复的字符
- 浮动DIV代码
- 呵呵,只是开通而已