avrclassic.h

来自「AVR系列被广泛应用的单片机MEGA8开发(原理图)及例程」· C头文件 代码 · 共 220 行

H
220
字号
#ifndef __AVR603_H
#define __AVR603_H

#warning "This header file is NOT current. Please use io???v.h instead"

// Please use io603m.h instead!!

#include "avr_common.h"

/* For the ATmega603/103 AVR microcontroller
 */
// SRAM Addresses
#define SREG 	(*(volatile unsigned char *)0x5F)
	#define	SREG_GIE	0x80		// Global Interrupt Enable. 
    #define	SREG_BCS	0x40		// Bit Copy Storage. 
	#define	SREG_HCF	0x20		// Half Carry Flag
	#define SREG_SB		0x10		// Sign Bit.
	#define SREG_TCO	0x08		// Twos Complement Overflow.
	#define	SREG_NEG	0x04		// Negative Flag. 
	#define SREG_ZF		0x02		// Zero Flag. 
	#define SREG_CF		0x01		// Carry Flag. 
	
// Stack Pointer (High/Low) 
#define SPH		(*(volatile unsigned char *)0x5E)
#define SPL		(*(volatile unsigned char *)0x5D)
	#define SP	(*(volatile unsigned int *)0x5D)

#define XDIV	(*(volatile unsigned char *)0x5C)		// ATmega Crystal Divide Register. 
	#define	XDIVEN		0x80	// Enable Crystal Divide. 
	#define	XDVAL		0x7F	// XTAL / (129 - XDVAL ). 

#define RAMPZ	(*(volatile unsigned char *)0x5B)
	#define	RAMPZ0		0x01		// Ram Page		 
#define EICR	(*(volatile unsigned char *)0x5A)
	#define EICR_L		0x00	// And for Low interrupt. 
	#define EICR_R		0x10	// AND for Falling edge. 
	#define EICR_F		0x11	// AND for Rising edge. 
	#define	ISC7		0xC0	// Interrupt 7 
	#define	ISC6		0x30	// Interrupt 6 
	#define	ISC5		0x0C	// Interrupt 5 
	#define	ISC4		0x03	// Interrupt 4 

#define EIMSK	(*(volatile unsigned char *)0x59)
	#define	EIM7		0x80	// External Interrupt 7 Enable 
	#define	EIM6		0x40
	#define EIM5		0x20
	#define EIM4		0x10
	#define EIM3		0x08
	#define	EIM2		0x04
	#define EIM1		0x02
	#define	EIM0		0x01

#define EIFR	(*(volatile unsigned char *)0x58)
	#define	EIF7		0x80
	#define EIF6		0x40
	#define EIF5		0x20
	#define EIF4		0x10

#define TIMSK	(*(volatile unsigned char *)0x57)
	#define	OCIE2		0x80	// Timer Counter 2 Output Compare Interrupt Enable. 
	#define	TOIE2		0x40	// Timer Counter 2 Overflow Interrupt Enable. 
	#define	TICIE1		0x20	// Timer Counter 1 Input Capture Interrupt Enable. 
	#define	OCIE1A		0x10	// Timer Counter 1 Output CompareA match Interrupt Enable. 
	#define	OCIE1B		0x08	// Timer Counter 1 Output CompareB Match Interrupt Enable. 
	#define	TOIE1		0x04	// Timer Counter 1 Overflow Interrupt Enable. 
	#define OCIE0		0x02	// Timer Counter 0 Output Compare Interrupt Enable. 
	#define TOIE0		0x01	// Timer Counter 0 Overflow Interrupt Enable. 

#define TIFR	(*(volatile unsigned char *)0x56)
	#define OCF2		0x80	// Output Compare Flag 2 
	#define TOV2		0x40	// Timer Counter 2 Overflow Flag. 
	#define	ICF1		0x20	// Input Capture Flag 1. 
	#define	OCF1A		0x10	// Output Compare Flag 1A. 
	#define	OCF1B		0x08	// Output Compare Flag 1B. 
	#define	TOV1		0x04	// Timer Counter 1 Overflow Flag. 
	#define OCF0		0x02	// Output Compare Flag 0. 
	#define TOV0		0x01	// Timer Counter 0 Overflow Flag. 

#define MCUCR	(*(volatile unsigned char *)0x55)
	#define	SRE		0x80	// External Ram Enable. 
	#define	SRW		0x40	// External Ram Wait State. 
	#define SME		0x20	// Sleep Enable. 
	#define	SM_IDLE	0x00	// Sleep - Idle 
	#define SM_PD	0x10	// Power Down. 
	#define SM_PS	0x18	// Power Save. 

#define MCUSR	(*(volatile unsigned char *)0x54)
	#define PORF	0x01	// Power on reset. 
	#define	EXTRF	0x02	// External Reset. 

#define TCCR0	(*(volatile unsigned char *)0x53)
	#define	CS0_0	0x00	// Timer Counter Stopped. 
	#define CS0_1	0x01	// Prescale = TCK0 
	#define CS0_8	0x02	// Prescale /8 
	#define CS0_32	0x03	// Prescale /32 
	#define CS0_64	0x04	// Prescale /64 
	#define CS0_128	0x05	// Prescale /128 
	#define CS0_256	0x06	// Prescale /256 
	#define CS0_1024	0x07	// Prescale /1024 
#define TCCR2	(*(volatile unsigned char *)0x45)
	#define	PWMX	0x40	// PWM 0,2 Enable. 
	#define COMX_NC	0x00   	// Compare Mode Disconnect output. 
	#define	COMX_T	0x10	// Compare Mode Toggle Output. 
	#define COMX_C	0x20	// Compare Mode Clear Output. 
	#define COMX_S	0x30	// Compare Mode Set Output. 
	#define CTC02	0x08	// Clear Timer 0 or 2 on compare match. 
	#define	CS2_0	0x00	// Timer Counter Stopped. 
	#define CS2_1	0x01	// Prescale = CK 
	#define CS2_8	0x02	// Prescale /8 
	#define CS2_64	0x03	// Prescale /64 
	#define CS2_256	0x04	// Prescale /256 
	#define CS2_1024	0x05	// Prescale /1024 
	#define CS2F	0x06	// External Falling Edge.
	#define CS2R	0x07	// External Rising Edge. 

#define TCNT0	(*(volatile unsigned char *)0x52)
#define OCR0	(*(volatile unsigned char *)0x51)
#define ASSR	(*(volatile unsigned char *)0x50)

#define TCCR1A	(*(volatile unsigned char *)0x4F)
	#define	COM1A_T	0x40	// ToggleOC1A output line. 
	#define COM1A_C	0x80	// Clear OC1A output line. 
	#define	COM1A_S	0xC0	// Set   OC1A output line. 
	#define COM1B_T	0x10	// ToggleOC1B output line. 
	#define COM1B_C	0x20	// Clear OC1B output line. 
	#define	COM1B_S	0x30	// Set   OC1B output line. 
	#define	PWM_8	0x01	// 8 bit pwm mode. 
	#define PWM_9	0x02	// 9 bit pwm mode. 
	#define PWM_10	0x03	// 10 bit pwm mode. 

#define TCCR1B	(*(volatile unsigned char *)0x4E)
	#define ICNC1	0x80	// Input noise canceller. 
	#define	ICES1	0x40	// Select rising edge. 
	#define	CTC1	0x08	// Clear Counter Timer 1 on Compare match. 
	#define CS1_1	0x01	// Prescale /1. 
	#define CS1_8	0x02	// Prescale /8. 
	#define	CS1_64	0x03	// Prescale /64. 
	#define CS1_256	0x04	// Prescale /256. 
	#define CS1_1024	0x05	// Prescale /1024. 
	#define CS1XR	0x06	// External Pin T1, Rising edge. 
	#define CS1XF	0x07	// External Pin T1, Falling edge. 

// Timer Counter 1 (High, Low)	 
#define TCNT1H	(*(volatile unsigned char *)0x4D)
#define TCNT1L	(*(volatile unsigned char *)0x4C)
    #define TCNT1 (*(volatile unsigned int *)0x4C) 

// Timer Counter 1 Output Compare Register (A,B,High,Low) 
#define OCR1AH	(*(volatile unsigned char *)0x4B)
#define OCR1AL	(*(volatile unsigned char *)0x4A)
#define OCR1BH	(*(volatile unsigned char *)0x49)
#define OCR1BL	(*(volatile unsigned char *)0x48)
    #define OCR1A (*(volatile unsigned int *)0x4A) 
    #define OCR1B (*(volatile unsigned int *)0x48) 

// Timer Counter 1 Input Capture Register (High,Low) 
#define ICR1H	(*(volatile unsigned char *)0x47)
#define ICR1L	(*(volatile unsigned char *)0x46)
	#define ICR1 	(*(volatile unsigned int *)0x46) 

// Timer Counter 2 Register. 
#define TCNT2	(*(volatile unsigned char *)0x44)
// Timer Counter 2 Output Compare Register. 
#define OCR2	(*(volatile unsigned char *)0x43)

// Watchdog Timer Control Register. 
#define WDTCR	(*(volatile unsigned char *)0x41)
	#define	WDTOE	0x10	// Turn Off Enable. 
	#define	WDE		0x08	// Enable. 
	#define	WDP16K	0x00	// 16K Cycles. 
	#define WDP32K	0x01	// 32K 
	#define	WDP64K	0x02	// 64K 
	#define	WDP128K	0x03	// 128K 
	#define WDP256K	0x04	// 256K 
	#define WDP512K	0x05	// 512K 
	#define	WDP1024K	0x06	// 1024K 
	#define WDP2048K	0x07	// 2048K 

// EPROM Read Write Address (Low, High) 
#define EEARH	(*(volatile unsigned char *)0x3F)
#define EEARL	(*(volatile unsigned char *)0x3E)
	// EEPROM, 16 bit address 
	#define EEAR	(*(volatile unsigned int *)0x3E)

// EPROM Data Register. 
#define EEDR	(*(volatile unsigned char *)0x3D)
// EPROM Control Register. 
#define EECR	(*(volatile unsigned char *)0x3C)
	#define	EERIE	0x08	// EPROM Ready Interrupt Enable. 
	#define	EEMWE	0x04	// EPROM Master Write Enable. 
	#define	EEWE	0x02	// EPROM Write Enable. 
	#define EERE	0x01	// EPROM Read Enable. 

#define PORTA	(*(volatile unsigned char *)0x3B)
#define DDRA	(*(volatile unsigned char *)0x3A)
#define PINA	(*(volatile unsigned char *)0x39)

#define PORTB	(*(volatile unsigned char *)0x38)
#define DDRB	(*(volatile unsigned char *)0x37)
#define PINB	(*(volatile unsigned char *)0x36)

#define PORTC	(*(volatile unsigned char *)0x35)
#define DDRC	(*(volatile unsigned char *)0x34)
#define PINC	(*(volatile unsigned char *)0x33)

#define PORTD	(*(volatile unsigned char *)0x32)
#define DDRD	(*(volatile unsigned char *)0x31)
#define PIND	(*(volatile unsigned char *)0x30)

// SPI Data Register 
#define SPDR	(*(volatile unsigned char *)0x2F)	// SPI Data Register. 
// SPI Status Register 
#define SPSR	(*(volatile unsigned char *)0x2E)
	#define	SPIF	0x80	// SPI Interrupt Flag. 
	#define	WCOL	0x40	// Write Collision. 
// SPI Control Register. 
#define SPCR	(*(volatile unsigned char *)0x2D)
	#define	SPIE	0x80	// SPI Interrupt Enable. 
	#define NSPIE	0x7F	// ~SPIE 
	#define SPE		0x40	//

⌨️ 快捷键说明

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