|
楼主 |
发表于 2015-11-16 14:36:14
|
显示全部楼层
我用的是汇编。器件头文件是我自己根据手册改的。
LGT能不能提供汇编的器件头文件。
下面放上我改的328D的头文件。
#ifndef _328DDEF_INC_
#define _328DDEF_INC_
#pragma partinc 0
; ***** SPECIFY DEVICE ***************************************************
.device ATmega328
#pragma AVRPART ADMIN PART_NAME ATmega328
.equ SIGNATURE_000 = 0x1e
.equ SIGNATURE_001 = 0x93
.equ SIGNATURE_002 = 0x0a
#pragma AVRPART CORE CORE_VERSION V2E
; ***** I/O REGISTER DEFINITIONS *****************************************
; NOTE:
; Definitions marked "MEMORY MAPPED"are extended I/O ports
; and cannot be used with IN/OUT instructions
;@@@@@@@@@@@@@@@@@ 8F88D PART START@@@@@@@@@@@@@@@@@@@@
/* GUID 全局设备号*/
.EQU GUID3 = 0xf6 ;
.EQU GUID2 = 0xf5 ;
.EQU GUID1 = 0xf4 ;
.EQU GUID0 = 0xf3 ;
/* PMCR 时钟源管理寄存器 */
.EQU PMCR = 0xf2 ;
.EQU RC32MEN = 0 ; 内部 32MHz RC 振荡器使能控制,1 使能,0 禁止
.EQU RC32KEN = 1 ; 内部 32KHz RC 振荡器使能控制,1 使能,0 禁止
.EQU OSCMEN = 2 ; 外部高频晶振使能控制,1 使能,0 禁止
.EQU OSCKEN = 3 ; 外部低频晶振使能控制,1 使能,0 禁止
.EQU WCLKS = 4 ; WDT 时钟源选择
.EQU CLKSS = 5 ; 主时钟源选择控制
.EQU CLKFS = 6 ; 主时钟源频率控制
.EQU PMCE = 7 ; PMCR 寄存器更改使能控制位
/*IOCR 特殊功能控制寄存器*/
.EQU IOCR = 0XF0
.EQU EXIOEN = 0 ; PC6 引脚默认为复位功能,设置此位为 1 将禁止外部复位功能
; 复位功能禁止后,PC6 可作为一个普通的 I/O 使用
.EQU RVIOEN = 1 ; VREF引脚默认为模拟输入功能
; 设置此位为1,将关闭模拟输入功能,这个引脚可以作为PE6使用
.EQU IOCE = 7 ; IOCR值改变使能位
.EQU PMXCR = 0XEE
.EQU OC0C0 = 3 ;
.EQU SSB1 = 2 ;
.EQU TDD6 = 1 ;
.EQU RDD5 = 0 ;
.EQU TKCSR = $EC ;
.EQU F2XEN = 6 ;
.EQU TC2XF1 = 5 ;
.EQU TC2XF0 = 4 ;
.EQU AFCKS = 2 ;
.EQU TC2XS1 = 1 ;
.EQU TC2XS0 = 0 ;
/*PSSR 预分频器选择寄存器 */
.EQU PSSR = 0XE2
.EQU PSR1 = 0 ; 预分频器 CPS1 复位控制位
.EQU PSS1 = 7 ; 预分频器选择控制位
/*DIDR3 数字输入禁用寄存器3*/
.EQU LDOCR = 0XCF
.EQU WEN = 7 ;
.EQU PDEN = 3 ;
.EQU VSEL2 = 2 ;
.EQU VSEL1 = 1 ;
.EQU VSEL0 = 0 ;
/*DIDR2 数字输入禁用寄存器2*/
.EQU VCAL2 = 0XCE ;
.EQU VCAL1 = 0XCD ;
.EQU VCAL = 0XC8 ;
;@@@@@@@@@@@@@@@@@ LGT8F88D PART END @@@@@@@@@@@@@@@@@@@@@@
.equ UDR = 0xc6 ; MEMORY MAPPED
; UDR - USART 数据寄存器
.equ UDR1_0 = 0 ; USART 发送和接收的数据
.equ UDR1_1 = 1 ;
.equ UDR1_2 = 2 ;
.equ UDR1_3 = 3 ;
.equ UDR1_4 = 4 ;
.equ UDR1_5 = 5 ;
.equ UDR1_6 = 6 ;
.equ UDR1_7 = 7 ;
.equ UBRRL = 0xc4 ; MEMORY MAPPED
; UBRRL - USART 波特率寄存器低字节
.equ UBRR0 = 0 ; USART 波特率寄存器的低字节部分
.equ UBRR1 = 1 ;
.equ UBRR2 = 2 ;
.equ UBRR3 = 3 ;
.equ UBRR4 = 4 ;
.equ UBRR5 = 5 ;
.equ UBRR6 = 6 ;
.equ UBRR7 = 7 ;
.equ UBRRH = 0xc5 ; MEMORY MAPPED
; UBRRH - USART 波特率寄存器高字节
.equ UBRR8 = 0 ; USART 波特率寄存器的高字节部分
.equ UBRR9 = 1 ;
.equ UBRR10 = 2 ;
.equ UBRR11 = 3 ;
.equ UCSRC = 0xc2 ; MEMORY MAPPED
; UCSRC - USART 控制和状态寄存器 C
.equ UCPOL = 0 ; 时钟极性选择位
.equ UCSZ0 = 1 ; 字符长度控制位0
.equ UCSZ1 = 2 ; 字符长度控制位1
.equ USBS = 3 ; 停止位选择位
.equ UPM0 = 4 ; 奇偶校验模式选择位
.equ UPM1 = 5 ;
.equ UMSEL0 = 6 ; USART 模式选择位
.equ UMSEL1 = 7 ;
.equ UCSRB = 0xc1 ; MEMORY MAPPED
; UCSRB - USART 控制和状态寄存器 B
.equ TXB8 = 0 ; 发送数据第 8 位
.equ RXB8 = 1 ; 接收数据第 8 位
.equ UCSZ2 = 2 ; 字符长度控制位2
.equ TXEN = 3 ; 发送使能位
.equ RXEN = 4 ; 接收使能位
.equ UDRIE = 5 ; 数据寄存器空中断使能位
.equ TXCIE = 6 ; 发送结束中断使能位
.equ RXCIE = 7 ; 接收结束中断使能位
.equ UCSRA = 0xc0 ; MEMORY MAPPED
; UCSRA - USART 控制和状态寄存器 A
.equ MPCM = 0 ; 多处理器通信模式使能位
.equ U2X = 1 ; 倍速发送使能位
.equ UPE = 2 ; 奇偶校验错误标志位
.equ DOR = 3 ; 数据溢出标志位
.equ FE = 4 ; 帧错误标志位
.equ UDRE = 5 ; 数据寄存器空标志位
.equ TXC = 6 ; 发送结束标志位
.equ RXC = 7 ; 接收结束标志位
.equ TWAMR = 0xbd ; MEMORY MAPPED
; TWAMR - TWI 地址屏蔽寄存器
.equ TWAM0 = 1 ; TWI 地址屏蔽控制位
.equ TWAM1 = 2 ;
.equ TWAM2 = 3 ;
.equ TWAM3 = 4 ;
.equ TWAM4 = 5 ;
.equ TWAM5 = 6 ;
.equ TWAM6 = 7 ;
.equ TWCR = 0xbc ; MEMORY MAPPED
; TWCR - TWI 控制寄存器
.equ TWIE = 0 ; TWI 中断使能控制位
.equ TWEN = 2 ; TWI 使能控制位
.equ TWWC = 3 ; TWI 写冲突标志位
.equ TWSTO = 4 ; TWI 停止状态控制位
.equ TWSTA = 5 ; TWI 起始状态控制位
.equ TWEA = 6 ; TWI 使能应答控制位
.equ TWINT = 7 ; TWI 中断标志位
.equ TWDR = 0xbb ; MEMORY MAPPED
; TWDR - TWI 数据寄存器
.equ TWD0 = 0 ; TWI 数据寄存器
.equ TWD1 = 1 ;
.equ TWD2 = 2 ;
.equ TWD3 = 3 ;
.equ TWD4 = 4 ;
.equ TWD5 = 5 ;
.equ TWD6 = 6 ;
.equ TWD7 = 7 ;
.equ TWAR = 0xba ; MEMORY MAPPED
; TWAR - TWI 地址寄存器
.equ TWGCE = 0 ; TWI 广播识别使能控制位
.equ TWA0 = 1 ; TWI 从机地址位
.equ TWA1 = 2 ;
.equ TWA2 = 3 ;
.equ TWA3 = 4 ;
.equ TWA4 = 5 ;
.equ TWA5 = 6 ;
.equ TWA6 = 7 ;
.equ TWSR = 0xb9 ; MEMORY MAPPED
; TWSR - TWI 状态寄存器
.equ TWPS0 = 0 ; TWI 预分频控制低位0
.equ TWPS1 = 1 ; TWI 预分频控制低位1
.equ TWS3 = 3 ; TWI 状态标志位
.equ TWS4 = 4 ;
.equ TWS5 = 5 ;
.equ TWS6 = 6 ;
.equ TWS7 = 7 ;
.equ TWBR = 0xb8 ; MEMORY MAPPED
; TWBR - TWI 比特率寄存器
.equ TWBR0 = 0 ; TWI 比特率选择控制位
.equ TWBR1 = 1 ;
.equ TWBR2 = 2 ;
.equ TWBR3 = 3 ;
.equ TWBR4 = 4 ;
.equ TWBR5 = 5 ;
.equ TWBR6 = 6 ;
.equ TWBR7 = 7 ;
.equ ASSR = 0xb6 ; MEMORY MAPPED
.equ TCR2BUB = 0 ;
.equ TCR2AUB = 1 ;
.equ OCR2BUB = 2 ;
.equ OCR2AUB = 3 ;
.equ TCN2UB = 4 ;
.equ AS2 = 5 ;
.equ EXCLK = 6 ;
.equ OCR2B = 0xb4 ; MEMORY MAPPED
; OCR2B - Timer/Counter2 Output Compare Register B
.equ OCR2B0 = 0 ; Timer/Counter2 Output Compare Register Bit 0
.equ OCR2B1 = 1 ; Timer/Counter2 Output Compare Register Bit 1
.equ OCR2B2 = 2 ; Timer/Counter2 Output Compare Register Bit 2
.equ OCR2B3 = 3 ; Timer/Counter2 Output Compare Register Bit 3
.equ OCR2B4 = 4 ; Timer/Counter2 Output Compare Register Bit 4
.equ OCR2B5 = 5 ; Timer/Counter2 Output Compare Register Bit 5
.equ OCR2B6 = 6 ; Timer/Counter2 Output Compare Register Bit 6
.equ OCR2B7 = 7 ; Timer/Counter2 Output Compare Register Bit 7
.equ OCR2A = 0xb3 ; MEMORY MAPPED
; OCR2A - Timer/Counter2 Output Compare Register A
.equ OCR2A0 = 0 ; Timer/Counter2 Output Compare Register Bit 0
.equ OCR2A1 = 1 ; Timer/Counter2 Output Compare Register Bit 1
.equ OCR2A2 = 2 ; Timer/Counter2 Output Compare Register Bit 2
.equ OCR2A3 = 3 ; Timer/Counter2 Output Compare Register Bit 3
.equ OCR2A4 = 4 ; Timer/Counter2 Output Compare Register Bit 4
.equ OCR2A5 = 5 ; Timer/Counter2 Output Compare Register Bit 5
.equ OCR2A6 = 6 ; Timer/Counter2 Output Compare Register Bit 6
.equ OCR2A7 = 7 ; Timer/Counter2 Output Compare Register Bit 7
.equ TCNT2 = 0xb2 ; MEMORY MAPPED
; TCNT2 - Timer/Counter2
.equ TCNT20 = 0 ; Timer/Counter 2 bit 0
.equ TCNT21 = 1 ; Timer/Counter 2 bit 1
.equ TCNT22 = 2 ; Timer/Counter 2 bit 2
.equ TCNT23 = 3 ; Timer/Counter 2 bit 3
.equ TCNT24 = 4 ; Timer/Counter 2 bit 4
.equ TCNT25 = 5 ; Timer/Counter 2 bit 5
.equ TCNT26 = 6 ; Timer/Counter 2 bit 6
.equ TCNT27 = 7 ; Timer/Counter 2 bit 7
.equ TCCR2B = 0xb1 ; MEMORY MAPPED
; TCCR2B - Timer/Counter2 Control Register B
.equ CS20 = 0 ; Clock Select bit 0
.equ CS21 = 1 ; Clock Select bit 1
.equ CS22 = 2 ; Clock Select bit 2
.equ WGM22 = 3 ; Waveform Generation Mode
.equ FOC2B = 6 ; Force Output Compare B
.equ FOC2A = 7 ; Force Output Compare A
.equ TCCR2A = 0xb0 ; MEMORY MAPPED
; TCCR2A - Timer/Counter2 Control Register A
.equ WGM20 = 0 ; Waveform Genration Mode
.equ WGM21 = 1 ; Waveform Genration Mode
.equ COM2B0 = 4 ; Compare Output Mode bit 0
.equ COM2B1 = 5 ; Compare Output Mode bit 1
.equ COM2A0 = 6 ; Compare Output Mode bit 1
.equ COM2A1 = 7 ; Compare Output Mode bit 1
.equ PORTE = 0xa9 ; MEMORY MAPPED
; PORTE - Port E Data Register
.equ PORTE0 = 0 ; Port E Data Register bit 0
.equ PE0 = 0 ; For compatibility
.equ PORTE1 = 1 ; Port E Data Register bit 1
.equ PE1 = 1 ; For compatibility
.equ PORTE2 = 2 ; Port E Data Register bit 2
.equ PE2 = 2 ; For compatibility
.equ PORTE3 = 3 ; Port E Data Register bit 3
.equ PE3 = 3 ; For compatibility
.equ PORTE4 = 4 ; Port E Data Register bit 4
.equ PE4 = 4 ; For compatibility
.equ PORTE5 = 5 ; Port E Data Register bit 5
.equ PE5 = 5 ; For compatibility
.equ PORTE6 = 6 ; Port E Data Register bit 6
.equ PE6 = 6 ; For compatibility
.equ PORTE7 = 7 ; Port E Data Register bit 7
.equ PE7 = 7 ; For compatibility
.equ DDRE = 0xa8 ; MEMORY MAPPED
; DDRE - Port E Data Direction Register
.equ DDE0 = 0 ; Port E Data Direction Register bit 0
.equ DDE1 = 1 ; Port E Data Direction Register bit 1
.equ DDE2 = 2 ; Port E Data Direction Register bit 2
.equ DDE3 = 3 ; Port E Data Direction Register bit 3
.equ DDE4 = 4 ; Port E Data Direction Register bit 4
.equ DDE5 = 5 ; Port E Data Direction Register bit 5
.equ DDE6 = 6 ; Port E Data Direction Register bit 6
.equ DDE7 = 7 ; Port E Data Direction Register bit 7
.equ PINE = 0xa7 ; MEMORY MAPPED
; PINE - Port E Input Pins
.equ PINE0 = 0 ; Port E Input Pins bit 0
.equ PINE1 = 1 ; Port E Input Pins bit 1
.equ PINE2 = 2 ; Port E Input Pins bit 2
.equ PINE3 = 3 ; Port E Input Pins bit 3
.equ PINE4 = 4 ; Port E Input Pins bit 4
.equ PINE5 = 5 ; Port E Input Pins bit 5
.equ PINE6 = 6 ; Port E Input Pins bit 6
.equ PINE7 = 7 ; Port E Input Pins bit 7
.equ OCR1BL = 0x8a ; MEMORY MAPPED
.equ OCR1BH = 0x8b ; MEMORY MAPPED
.equ OCR1AL = 0x88 ; MEMORY MAPPED
.equ OCR1AH = 0x89 ; MEMORY MAPPED
.equ ICR1L = 0x86 ; MEMORY MAPPED
.equ ICR1H = 0x87 ; MEMORY MAPPED
.equ TCNT1L = 0x84 ; MEMORY MAPPED
.equ TCNT1H = 0x85 ; MEMORY MAPPED
.equ TCCR1C = 0x82 ; MEMORY MAPPED
; TCCR1C - Timer/Counter1 Control Register C
.equ FOC1B = 6 ; 强制输出比较 B
.equ FOC1A = 7 ; 强制输出比较 A
.equ TCCR1B = 0x81 ; MEMORY MAPPED
; TCCR1B - Timer/Counter1 Control Register B
.equ CS10 = 0 ; Clock Select bit 0
.equ CS11 = 1 ; Clock Select 1 bit 1
.equ CS12 = 2 ; Clock Select1 bit 2
.equ WGM12 = 3 ; Waveform Generation Mode Bit 2
.equ WGM13 = 4 ; Waveform Generation Mode Bit 3
.equ ICES1 = 6 ; Input Capture 1 Edge Select
.equ ICNC1 = 7 ; Input Capture 1 Noise Canceler
.equ TCCR1A = 0x80 ; MEMORY MAPPED
; TCCR1A - Timer/Counter1 Control Register A
.equ WGM10 = 0 ; 波形产生模式控制位0
.equ WGM11 = 1 ; 波形产生模式控制位1
.equ COM1B0 = 4 ; Comparet Ouput Mode 1B, bit 0
.equ COM1B1 = 5 ; Compare Output Mode 1B, bit 1
.equ COM1A0 = 6 ; Comparet Ouput Mode 1A, bit 0
.equ COM1A1 = 7 ; Compare Output Mode 1A, bit 1
.equ DIDR1 = 0x7f ; MEMORY MAPPED
; DIDR1 - Digital Input Disable Register 1
.equ AIN0D = 0 ; AIN0 Digital Input Disable
.equ AIN1D = 1 ; AIN1 Digital Input Disable
.equ AIN2D = 2 ; AIN2 Digital Input Disable
.equ AIN3D = 3 ; AIN3 Digital Input Disable
.equ OPA0D = 4 ; OPA0 Digital Input Disable
.equ OPA1D = 5 ; OPA1 Digital Input Disable
.equ OPA2D = 6 ; OPA2 Digital Input Disable
.equ OPA3D = 7 ; OPA3 Digital Input Disable
.equ DIDR0 = 0x7e ; MEMORY MAPPED
; DIDR0 - Digital Input Disable Register
.equ ADC0D = 0 ;
.equ ADC1D = 1 ;
.equ ADC2D = 2 ;
.equ ADC3D = 3 ;
.equ ADC4D = 4 ;
.equ ADC5D = 5 ;
.equ ADC6D = 6 ;
.equ ADC7D = 7 ;
.equ ADTMR = 0x7d ; MEMORY MAPPED
/* ADTMR ADC模式控制寄存器 */
.EQU ADCTM = 0 ; ADC 测试模式选择控制位,用户设置 ADTM 位为001即可
.equ ADMUX = 0x7c ; MEMORY MAPPED
; ADMUX - ADC 多路选择控制寄存器
.equ CHMUX0 = 0 ; ADC 输入源选择控制位0
.equ CHMUX1 = 1 ; ADC 输入源选择控制位1
.equ CHMUX2 = 2 ; ADC 输入源选择控制位2
.equ CHMUX3 = 3 ; ADC 输入源选择控制位3
.equ ADLAR = 5 ; 转换结果左对齐使能控制位
.equ REFS0 = 6 ; 参考电压选择控制位0
.equ REFS1 = 7 ; 参考电压选择控制位1
.equ ADCSRB = 0x7b ; MEMORY MAPPED
; ADCSRB - The ADC Control and Status register B
.equ ADTS0 = 0 ; ADC 自动触发源选择控制位0
.equ ADTS1 = 1 ; ADC 自动触发源选择控制位1
.equ ADTS2 = 2 ; ADC 自动触发源选择控制位2
.equ ICTL = 4 ; 温度传感器模式选择控制位
.equ ACME = 6 ; 模拟比较器多路复用器使能控制位
.equ ADCSRA = 0x7a ; MEMORY MAPPED
; ADCSRA - The ADC Control and Status register A
.equ ADPS0 = 0 ; ADC Prescaler Select Bits
.equ ADPS1 = 1 ; ADC Prescaler Select Bits
.equ ADPS2 = 2 ; ADC Prescaler Select Bits
.equ ADIE = 3 ; ADC Interrupt Enable
.equ ADIF = 4 ; ADC Interrupt Flag
.equ ADATE = 5 ; ADC Auto Trigger Enable
.equ ADSC = 6 ; ADC Start Conversion
.equ ADEN = 7 ; ADC Enable
.equ ADCH = 0x79 ; MEMORY MAPPED
; ADCH - ADC Data Register High Byte
.equ ADC8 = 0 ; ADC Data Register High Byte Bit 0
.equ ADC9 = 1 ; ADC Data Register High Byte Bit 1
.equ ADC10 = 2 ; ADC Data Register High Byte Bit 0
.equ ADC11 = 3 ; ADC Data Register High Byte Bit 1
.equ ADCL = 0x78 ; MEMORY MAPPED
; ADCL - ADC Data Register Low Byte
.equ ADC0 = 0 ; ADC Data Register Low Byte Bit 0
.equ ADC1 = 1 ; ADC Data Register Low Byte Bit 1
.equ ADC2 = 2 ; ADC Data Register Low Byte Bit 2
.equ ADC3 = 3 ; ADC Data Register Low Byte Bit 3
.equ ADC4 = 4 ; ADC Data Register Low Byte Bit 4
.equ ADC5 = 5 ; ADC Data Register Low Byte Bit 5
.equ ADC6 = 6 ; ADC Data Register Low Byte Bit 6
.equ ADC7 = 7 ; ADC Data Register Low Byte Bit 7
.equ IVBASE = 0x75 ; MEMORY MAPPED
.equ PCMSK3 = 0x73 ; MEMORY MAPPED
; PCMSK3 - Pin Change Mask Register 3
.equ PCINT24 = 0 ; Pin Change Enable Mask 24
.equ PCINT25 = 1 ; Pin Change Enable Mask 25
.equ PCINT26 = 2 ; Pin Change Enable Mask 26
.equ PCINT27 = 3 ; Pin Change Enable Mask 27
.equ PCINT28 = 4 ; Pin Change Enable Mask 28
.equ PCINT29 = 5 ; Pin Change Enable Mask 29
.equ PCINT30 = 6 ; Pin Change Enable Mask 30
.equ TIMSK2 = 0x70 ; MEMORY MAPPED
; ***** TIMER_COUNTER_2 **************
; TIMSK2 - Timer/Counter Interrupt Mask register
.equ TOIE2 = 0 ; Timer/Counter2 Overflow Interrupt Enable
.equ OCIE2A = 1 ; Timer/Counter2 Output Compare Match A Interrupt Enable
.equ OCIE2B = 2 ; Timer/Counter2 Output Compare Match B Interrupt Enable
.equ TIMSK1 = 0x6f ; MEMORY MAPPED
; TIMSK1 - Timer/Counter1 Interrupt Mask Register
.equ TOIE1 = 0 ; Timer/Counter1 Overflow Interrupt Enable
.equ OCIE1A = 1 ; Timer/Counter1 Output Compare A Match Interrupt Enable
.equ OCIE1B = 2 ; Timer/Counter1 Output Compare B Match Interrupt Enable
.equ TICIE1 = 5 ; Timer/Counter1 Input Capture Interrupt Enable
.equ TIMSK0 = 0x6e ; MEMORY MAPPED
; ***** TIMER_COUNTER_0 **************
; TIMSK0 - Timer/Counter0 Interrupt Mask Register
.equ TOIE0 = 0 ; TC0 溢出中断使能位
.equ OCIE0A = 1 ; TC0 输出比较 A匹配中断使能位
.equ OCIE0B = 2 ; TC0 输出比较 B 匹配中断使能位
.equ PCMSK2 = 0x6d ; MEMORY MAPPED
; PCMSK2 - Pin Change Mask Register 2
.equ PCINT16 = 0 ; Pin Change Enable Mask 16
.equ PCINT17 = 1 ; Pin Change Enable Mask 17
.equ PCINT18 = 2 ; Pin Change Enable Mask 18
.equ PCINT19 = 3 ; Pin Change Enable Mask 19
.equ PCINT20 = 4 ; Pin Change Enable Mask 20
.equ PCINT21 = 5 ; Pin Change Enable Mask 21
.equ PCINT22 = 6 ; Pin Change Enable Mask 22
.equ PCINT23 = 7 ; Pin Change Enable Mask 23
.equ PCMSK1 = 0x6c ; MEMORY MAPPED
; PCMSK1 - Pin Change Mask Register 1
.equ PCINT8 = 0 ; Pin Change Enable Mask 8
.equ PCINT9 = 1 ; Pin Change Enable Mask 9
.equ PCINT10 = 2 ; Pin Change Enable Mask 10
.equ PCINT11 = 3 ; Pin Change Enable Mask 11
.equ PCINT12 = 4 ; Pin Change Enable Mask 12
.equ PCINT13 = 5 ; Pin Change Enable Mask 13
.equ PCINT14 = 6 ; Pin Change Enable Mask 14
.equ PCMSK0 = 0x6b ; MEMORY MAPPED
; PCMSK0 - Pin Change Mask Register 0
.equ PCINT0 = 0 ; Pin Change Enable Mask 0
.equ PCINT1 = 1 ; Pin Change Enable Mask 1
.equ PCINT2 = 2 ; Pin Change Enable Mask 2
.equ PCINT3 = 3 ; Pin Change Enable Mask 3
.equ PCINT4 = 4 ; Pin Change Enable Mask 4
.equ PCINT5 = 5 ; Pin Change Enable Mask 5
.equ PCINT6 = 6 ; Pin Change Enable Mask 6
.equ PCINT7 = 7 ; Pin Change Enable Mask 7
.equ EICRA = 0x69 ; MEMORY MAPPED
; EICRA - External Interrupt Control Register A
.equ ISC00 = 0 ; INT0 引脚中断触发方式控制位低位
.equ ISC01 = 1 ; INT0 引脚中断触发方式控制位高位
.equ ISC10 = 2 ; INT1 引脚中断触发方式控制位低位
.equ ISC11 = 3 ; INT1 引脚中断触发方式控制位高位
.equ PCICR = 0x68 ; MEMORY MAPPED
; PCICR - Pin Change Interrupt Control Register
.equ PCIE0 = 0 ; Pin Change Interrupt Enable 0
.equ PCIE1 = 1 ; Pin Change Interrupt Enable 1
.equ PCIE2 = 2 ; Pin Change Interrupt Enable 2
.equ PCIE3 = 3 ; Pin Change Interrupt Enable 3
.equ OSCCAL = 0x66 ; MEMORY MAPPED
.equ PRR1 = 0x65 ; MEMORY MAPPED
; PRR1 - 省电控制寄存器0
.equ PRPCI = 1 ; 设置为 1,关闭外部引脚变化以及外部中断模块工作时钟
.equ PREFL = 2 ; 设置为 1,关闭 FLASH 控制器接口时序时钟
.equ PRWDT = 5 ; 设置为 1,关闭 WDT 计数器时钟
.equ PRR = 0x64 ; MEMORY MAPPED
; PRR - 省电控制寄存器
.equ PRADC = 0 ; 设置为 1,关闭 ADC 控制器时钟
.equ PRUSART0= 1 ; 设置为 1,关闭 USART0 模块的时钟
.equ PRSPI = 2 ; 设置为 1,关闭 SPI 模块的时钟
.equ PRTIM1 = 3 ; 设置为 1,关闭定时/计数器 1的时钟
.equ PRTIM0 = 5 ; 设置为 1,关闭定时/计数器 0的时钟
.equ PRTIM2 = 6 ; 设置为 1,关闭定时/计数器 2的时钟
.equ PRTWI = 7 ; 设置为 1,关闭 TWI 模块的时钟
.equ VDTCR = 0x62 ; MEMORY MAPPED
.equ CLKPR = 0x61 ; MEMORY MAPPED
; CLKPR - 主时钟预分频寄存器
.EQU CLKPS0 = 0 ; 时钟预分频选择位
.EQU CLKPS1 = 1 ;
.EQU CLKPS2 = 2 ;
.EQU CLKPS3 = 3 ;
.EQU CLKOEN0 = 5 ; 设置系统时钟是否在 PB0 引脚上输出
.EQU CLKOEN1 = 6 ; 设置系统时钟是否在 PE5 引脚上输出
.EQU CLKPCE = 7 ; 时钟预分频更改时钟控制
.equ WDTCSR = 0x60 ; MEMORY MAPPED
; WDTCSR - Watchdog Timer Control Register
.equ WDP0 = 0 ; WDT 预分频因子选择控制0
.equ WDP1 = 1 ; WDT 预分频因子选择控制1
.equ WDP2 = 2 ; WDT 预分频因子选择控制2
.equ WDE = 3 ; WDT 使能控制位
.equ WDTOE = 4 ; WDT 关闭使能控制位
.equ WDP3 = 5 ; WDT 预分频因子选择控制3
.equ WDIE = 6 ; WDT 中断使能控制位
.equ WDIF = 7 ; WDT 中断标志位
.equ SREG = 0x3f
; SREG - 系统状态寄存器
.equ SREG_C = 0 ; 进位标志,表示算术或逻辑操作导致了进位
.equ SREG_Z = 1 ; 零标志,表示算术或逻辑运算的结果为零
.equ SREG_N = 2 ; 负标志,表示算术或逻辑运算产生了一个负数
.equ SREG_V = 3 ; 溢出标志,表示二进制补码运算结果产生溢出
.equ SREG_S = 4 ; S符号位,等效于 N与 V 的异或运算结果
.equ SREG_H = 5 ; 半进位标志,在 BCD 运算中有用,表示字节运算产生了的半进位
.equ SREG_T = 6 ; 临时位,位复制(BLD)和位存储(BST)指令中使用
.equ SREG_I = 7 ; 全局中断使能位
.equ SPH = 0x3e
.equ SPL = 0x3d
.equ OP0TCNT = 0x3a
.equ OP0CRB = 0x39
.equ OP0CRA = 0x38
.equ ECCR = 0x36
.equ MCUCR = 0x35
; MCUCR MCU 控制寄存器
.equ IVCE = 0 ; 中断向量选择更改使能位
.equ IVSEL = 1 ; 中断向量选择位
.equ PUD = 4 ; 全局上拉禁止位
.equ FPDEN = 6 ; FLASH POWER DOWN使能控制
.equ FWKPEN = 7 ; 快速唤醒模式使能控制
.equ MCUSR = 0x34
/* MCUSR MCU IO 特殊功能控制寄存器 */
.EQU PORF = 0 ; 上电复位标志,写 0 清零
.EQU EXTRF = 1 ; 外部复位标志,上电复位自动清零,或写 0 清零
.EQU BORF = 2 ; 低电压检测复位,上电复位自动清零,或写 0 清零
.EQU WDRF = 3 ; 看门狗复位标志,上电复位自动清零,或写 0 清零
.EQU OCDRF = 4 ; OCD 调试器复位标志,上电复位自动清零,或写 0 清零
.EQU PDRF = 5 ; 从POWER OFF模式唤醒标志
.EQU SWDD = 7 ; SWD 接口禁止位。写 1 将关闭 SWD 接口
.equ SMCR = 0x33
; SMCR - 休眠模式控制寄存器
.equ SE = 0 ; 休眠模式使能控制位
.equ SM0 = 1 ; 休眠模式选择
.equ SM1 = 2 ;
.equ SM2 = 3 ;
.equ DAL0 = 0x32
.equ AFTCNT0 = 0x31
.equ AC0SR = 0x30
; ACSR - Analog Comparator Control And Status Register
.equ ACIS0 = 0 ; Analog Comparator Interrupt Mode Select bit 0
.equ ACIS1 = 1 ; Analog Comparator Interrupt Mode Select bit 1
.equ ACIC = 2 ; Analog Comparator Input Capture Enable
.equ ACIE = 3 ; Analog Comparator Interrupt Enable
.equ ACI = 4 ; Analog Comparator Interrupt Flag
.equ ACO = 5 ; Analog Compare Output
.equ ACBG = 6 ; Analog Comparator Bandgap Select
.equ ACD = 7 ; Analog Comparator Disable
.equ SPDR = 0x2e
; SPDR - SPI 数据寄存器
.equ SPDRB0 = 0 ; SPI 发送和接收的数据
.equ SPDRB1 = 1 ;
.equ SPDRB2 = 2 ;
.equ SPDRB3 = 3 ;
.equ SPDRB4 = 4 ;
.equ SPDRB5 = 5 ;
.equ SPDRB6 = 6 ;
.equ SPDRB7 = 7 ;
.equ SPSR = 0x2d
; SPSR - SPI 状态寄存器
.equ SPI2X = 0 ; SPI 倍速控制位
.equ dual = 2 ; 双线模式控制位
.equ WCOL = 6 ; 写冲突标志位
.equ SPIF = 7 ; SPI 中断标志位
.equ SPCR = 0x2c
; SPCR - SPI 控制寄存器
.equ SPR0 = 0 ; 时钟速率选择位 0
.equ SPR1 = 1 ; 时钟速率选择位 1
.equ CPHA = 2 ; 时钟相位控制位
.equ CPOL = 3 ; 时钟极性控制位
.equ MSTR = 4 ; 主机从机选择控制位
.equ DORD = 5 ; 数据次序控制位
.equ SPE = 6 ; SPI 使能位
.equ SPIE = 7 ; SPI 中断使能位
.equ GPIOR2 = 0x2b
; GPIOR2 - 通用寄存器 2
.equ GPIOR20 = 0 ; 通用寄存器2位0
.equ GPIOR21 = 1 ; 通用寄存器2位1
.equ GPIOR22 = 2 ; 通用寄存器2位2
.equ GPIOR23 = 3 ; 通用寄存器2位3
.equ GPIOR24 = 4 ; 通用寄存器2位4
.equ GPIOR25 = 5 ; 通用寄存器2位5
.equ GPIOR26 = 6 ; 通用寄存器2位6
.equ GPIOR27 = 7 ; 通用寄存器2位7
.equ GPIOR1 = 0x2a
; GPIOR1 - 通用寄存器 1
.equ GPIOR10 = 0 ; 通用寄存器1位0
.equ GPIOR11 = 1 ; 通用寄存器1位1
.equ GPIOR12 = 2 ; 通用寄存器1位2
.equ GPIOR13 = 3 ; 通用寄存器1位3
.equ GPIOR14 = 4 ; 通用寄存器1位4
.equ GPIOR15 = 5 ; 通用寄存器1位5
.equ GPIOR16 = 6 ; 通用寄存器1位6
.equ GPIOR17 = 7 ; 通用寄存器1位7
.equ OCR0B = 0x28
; OCR0B - Timer/Counter0 Output Compare Register
.equ OCR0B0 = 0 ;
.equ OCR0B1 = 1 ;
.equ OCR0B2 = 2 ;
.equ OCR0B3 = 3 ;
.equ OCR0B4 = 4 ;
.equ OCR0B5 = 5 ;
.equ OCR0B6 = 6 ;
.equ OCR0B7 = 7 ;
.equ OCR0A = 0x27
; OCR0A - Timer/Counter0 Output Compare Register
.equ OCR0A0 = 0 ;
.equ OCR0A1 = 1 ;
.equ OCR0A2 = 2 ;
.equ OCR0A3 = 3 ;
.equ OCR0A4 = 4 ;
.equ OCR0A5 = 5 ;
.equ OCR0A6 = 6 ;
.equ OCR0A7 = 7 ;
.equ TCNT0 = 0x26
; TCNT0 - Timer/Counter0
.equ TCNT00 = 0 ;
.equ TCNT01 = 1 ;
.equ TCNT02 = 2 ;
.equ TCNT03 = 3 ;
.equ TCNT04 = 4 ;
.equ TCNT05 = 5 ;
.equ TCNT06 = 6 ;
.equ TCNT07 = 7 ;
.equ TCCR0B = 0x25
; TCCR0B - Timer/Counter Control Register B
.equ CS00 = 0 ; Clock Select
.equ CS01 = 1 ; Clock Select
.equ CS02 = 2 ; Clock Select
.equ WGM02 = 3 ; TC0 波形产生模式控制高位
.equ OC0AS = 5 ; OC0A输出端口选择控制位
.equ FOC0B = 6 ; TC0 强制输出比较 B 控制位
.equ FOC0A = 7 ; TC0 强制输出比较 A 控制位
.equ TCCR0A = 0x24
; TCCR0A - Timer/Counter Control Register A
.equ WGM00 = 0 ; Waveform Generation Mode
.equ WGM01 = 1 ; Waveform Generation Mode
.equ COM0B0 = 4 ; Compare Output Mode, Fast PWm
.equ COM0B1 = 5 ; Compare Output Mode, Fast PWm
.equ COM0A0 = 6 ; Compare Output Mode, Phase Correct PWM Mode
.equ COM0A1 = 7 ; Compare Output Mode, Phase Correct PWM Mode
.equ GTCCR = 0x23
; GTCCR - General Timer/Counter Control Register
.equ PSRSYNC = 0 ; 预分频器 CPS10 复位控制位
.equ PSRASY = 1 ; For compatibility
.equ TSM = 7 ; 定时计数器同步模式控制位
.equ EEARH = 0x22
; EEARH - FLASH/E2PROM地址寄存器高字节
.equ EEAR8 = 0 ; EFLASH/E2PROM 访问地址高 5位
.equ EEAR9 = 1 ;
.equ EEAR10 = 2 ;
.equ EEAR11 = 3 ;
.equ EEAR12 = 4 ;
.equ EEARL = 0x21
; EEARL - FLASH/E2PROM地址寄存器低字节
.equ EEAR0 = 0 ; EFLASH/E2PROM 访问地址低 8位
.equ EEAR1 = 1 ;
.equ EEAR2 = 2 ;
.equ EEAR3 = 3 ;
.equ EEAR4 = 4 ;
.equ EEAR5 = 5 ;
.equ EEAR6 = 6 ;
.equ EEAR7 = 7 ;
.equ EEDR = 0x20
; EEDR - FLASH/E2PROM 数据寄存器
.equ EEDR0 = 0 ; EFLASH/E2PROM 数据寄存器
.equ EEDR1 = 1 ;
.equ EEDR2 = 2 ;
.equ EEDR3 = 3 ;
.equ EEDR4 = 4 ;
.equ EEDR5 = 5 ;
.equ EEDR6 = 6 ;
.equ EEDR7 = 7 ;
.equ EECR = 0x1f
; EECR - FLASH/E2PROM 控制寄存器
.equ EERE = 0 ; EEPROM Read Enable
.equ EEPE = 1 ; EEPROM Write Enable
.equ EEMPE = 2 ; EEPROM Master Write Enable
.equ EERIE = 3 ; EEPROM Ready Interrupt Enable
.equ EEPM0 = 4 ; EEPROM Programming Mode Bit 0
.equ EEPM1 = 5 ; EEPROM Programming Mode Bit 1
.equ EEPM2 = 6 ; EEPROM Programming Mode Bit 2
.equ EEPM3 = 7 ; EEPROM Programming Mode Bit 3
.equ GPIOR0 = 0x1e
; GPIOR0 - 通用寄存器 0
.equ GPIOR00 = 0 ; 通用寄存器0位0
.equ GPIOR01 = 1 ; 通用寄存器0位1
.equ GPIOR02 = 2 ; 通用寄存器0位2
.equ GPIOR03 = 3 ; 通用寄存器0位3
.equ GPIOR04 = 4 ; 通用寄存器0位4
.equ GPIOR05 = 5 ; 通用寄存器0位5
.equ GPIOR06 = 6 ; 通用寄存器0位6
.equ GPIOR07 = 7 ; 通用寄存器0位7
.equ EIMSK = 0x1d
; EIMSK - External Interrupt Mask Register
.equ INT0 = 0 ; External Interrupt Request 0 Enable
.equ INT1 = 1 ; External Interrupt Request 1 Enable
.equ EIFR = 0x1c
; EIFR - External Interrupt Flag Register
.equ INTF0 = 0 ; External Interrupt Flag 0
.equ INTF1 = 1 ; External Interrupt Flag 1
.equ PCIFR = 0x1b
; PCIFR - Pin Change Interrupt Flag Register
.equ PCIF0 = 0 ; Pin Change Interrupt Flag 0
.equ PCIF1 = 1 ; Pin Change Interrupt Flag 1
.equ PCIF2 = 2 ; Pin Change Interrupt Flag 2
.equ PCIF3 = 3 ; Pin Change Interrupt Flag 3
.equ TIFR2 = 0x17
; TIFR2 - Timer/Counter Interrupt Flag Register
.equ TOV2 = 0 ; Timer/Counter2 Overflow Flag
.equ OCF2A = 1 ; Output Compare Flag 2A
.equ OCF2B = 2 ; Output Compare Flag 2B
.equ TIFR1 = 0x16
; TIFR1 - Timer/Counter Interrupt Flag register
.equ TOV1 = 0 ; Timer/Counter1 Overflow Flag
.equ OCF1A = 1 ; Timer/Counter1 Output Compare A Match Flag
.equ OCF1B = 2 ; Timer/Counter1 Output Compare B Match Flag
.equ ICF1 = 5 ; Timer/Counter1 Input Capture Flag
.equ TIFR0 = 0x15
; TIFR0 - Timer/Counter0 Interrupt Flag register
.equ TOV0 = 0 ; TC0 溢出标志位
.equ OCF0A = 1 ; TC0 输出比较 A匹配标志位
.equ OCF0B = 2 ; TC0 输出比较 B 匹配标志位
.equ OP1TCNT = 0x14
.equ OP1CRB = 0x13
.equ OP1CRA = 0x12
.equ DAL1 = 0x11
.equ AFTCNT1 = 0x10
.equ AC1CSR = 0x0f
.equ PORTD = 0x0b
; PORTD - Port D Data Register
.equ PORTD0 = 0 ; Port D Data Register bit 0
.equ PD0 = 0 ; For compatibility
.equ PORTD1 = 1 ; Port D Data Register bit 1
.equ PD1 = 1 ; For compatibility
.equ PORTD2 = 2 ; Port D Data Register bit 2
.equ PD2 = 2 ; For compatibility
.equ PORTD3 = 3 ; Port D Data Register bit 3
.equ PD3 = 3 ; For compatibility
.equ PORTD4 = 4 ; Port D Data Register bit 4
.equ PD4 = 4 ; For compatibility
.equ PORTD5 = 5 ; Port D Data Register bit 5
.equ PD5 = 5 ; For compatibility
.equ PORTD6 = 6 ; Port D Data Register bit 6
.equ PD6 = 6 ; For compatibility
.equ PORTD7 = 7 ; Port D Data Register bit 7
.equ PD7 = 7 ; For compatibility
.equ DDRD = 0x0a
; DDRD - Port D Data Direction Register
.equ DDD0 = 0 ; Port D Data Direction Register bit 0
.equ DDD1 = 1 ; Port D Data Direction Register bit 1
.equ DDD2 = 2 ; Port D Data Direction Register bit 2
.equ DDD3 = 3 ; Port D Data Direction Register bit 3
.equ DDD4 = 4 ; Port D Data Direction Register bit 4
.equ DDD5 = 5 ; Port D Data Direction Register bit 5
.equ DDD6 = 6 ; Port D Data Direction Register bit 6
.equ DDD7 = 7 ; Port D Data Direction Register bit 7
.equ PIND = 0x09
; PIND - Port D Input Pins
.equ PIND0 = 0 ; Port D Input Pins bit 0
.equ PIND1 = 1 ; Port D Input Pins bit 1
.equ PIND2 = 2 ; Port D Input Pins bit 2
.equ PIND3 = 3 ; Port D Input Pins bit 3
.equ PIND4 = 4 ; Port D Input Pins bit 4
.equ PIND5 = 5 ; Port D Input Pins bit 5
.equ PIND6 = 6 ; Port D Input Pins bit 6
.equ PIND7 = 7 ; Port D Input Pins bit 7
.equ PORTC = 0x08
; PORTC - Port C Data Register
.equ PORTC0 = 0 ; Port C Data Register bit 0
.equ PC0 = 0 ; For compatibility
.equ PORTC1 = 1 ; Port C Data Register bit 1
.equ PC1 = 1 ; For compatibility
.equ PORTC2 = 2 ; Port C Data Register bit 2
.equ PC2 = 2 ; For compatibility
.equ PORTC3 = 3 ; Port C Data Register bit 3
.equ PC3 = 3 ; For compatibility
.equ PORTC4 = 4 ; Port C Data Register bit 4
.equ PC4 = 4 ; For compatibility
.equ PORTC5 = 5 ; Port C Data Register bit 5
.equ PC5 = 5 ; For compatibility
.equ PORTC6 = 6 ; Port C Data Register bit 6
.equ PC6 = 6 ; For compatibility
.equ PORTC7 = 7 ; Port C Data Register bit 7
.equ PC7 = 7 ; For compatibility
.equ DDRC = 0x07
; DDRC - Port C Data Direction Register
.equ DDC0 = 0 ; Port C Data Direction Register bit 0
.equ DDC1 = 1 ; Port C Data Direction Register bit 1
.equ DDC2 = 2 ; Port C Data Direction Register bit 2
.equ DDC3 = 3 ; Port C Data Direction Register bit 3
.equ DDC4 = 4 ; Port C Data Direction Register bit 4
.equ DDC5 = 5 ; Port C Data Direction Register bit 5
.equ DDC6 = 6 ; Port C Data Direction Register bit 6
.equ DDC7 = 7 ; Port C Data Direction Register bit 7
.equ PINC = 0x06
; PINC - Port C Input Pins
.equ PINC0 = 0 ; Port C Input Pins bit 0
.equ PINC1 = 1 ; Port C Input Pins bit 1
.equ PINC2 = 2 ; Port C Input Pins bit 2
.equ PINC3 = 3 ; Port C Input Pins bit 3
.equ PINC4 = 4 ; Port C Input Pins bit 4
.equ PINC5 = 5 ; Port C Input Pins bit 5
.equ PINC6 = 6 ; Port C Input Pins bit 6
.equ PINC7 = 7 ; Port C Input Pins bit 7
.equ PORTB = 0x05
; PORTB - Port B Data Register
.equ PORTB0 = 0 ; Port B Data Register bit 0
.equ PB0 = 0 ; For compatibility
.equ PORTB1 = 1 ; Port B Data Register bit 1
.equ PB1 = 1 ; For compatibility
.equ PORTB2 = 2 ; Port B Data Register bit 2
.equ PB2 = 2 ; For compatibility
.equ PORTB3 = 3 ; Port B Data Register bit 3
.equ PB3 = 3 ; For compatibility
.equ PORTB4 = 4 ; Port B Data Register bit 4
.equ PB4 = 4 ; For compatibility
.equ PORTB5 = 5 ; Port B Data Register bit 5
.equ PB5 = 5 ; For compatibility
.equ PORTB6 = 6 ; Port B Data Register bit 6
.equ PB6 = 6 ; For compatibility
.equ PORTB7 = 7 ; Port B Data Register bit 7
.equ PB7 = 7 ; For compatibility
.equ DDRB = 0x04
; DDRB - Port B Data Direction Register
.equ DDB0 = 0 ; Port B Data Direction Register bit 0
.equ DDB1 = 1 ; Port B Data Direction Register bit 1
.equ DDB2 = 2 ; Port B Data Direction Register bit 2
.equ DDB3 = 3 ; Port B Data Direction Register bit 3
.equ DDB4 = 4 ; Port B Data Direction Register bit 4
.equ DDB5 = 5 ; Port B Data Direction Register bit 5
.equ DDB6 = 6 ; Port B Data Direction Register bit 6
.equ DDB7 = 7 ; Port B Data Direction Register bit 7
.equ PINB = 0x03
; PINB - Port B Input Pins
.equ PINB0 = 0 ; Port B Input Pins bit 0
.equ PINB1 = 1 ; Port B Input Pins bit 1
.equ PINB2 = 2 ; Port B Input Pins bit 2
.equ PINB3 = 3 ; Port B Input Pins bit 3
.equ PINB4 = 4 ; Port B Input Pins bit 4
.equ PINB5 = 5 ; Port B Input Pins bit 5
.equ PINB6 = 6 ; Port B Input Pins bit 6
.equ PINB7 = 7 ; Port B Input Pins bit 7
; ***** CPU REGISTER DEFINITIONS *****************************************
.def XH = r27
.def XL = r26
.def YH = r29
.def YL = r28
.def ZH = r31
.def ZL = r30
; ***** DATA MEMORY DECLARATIONS *****************************************
.EQU FLASHEND = 0x3fff ; Note: Word address
.EQU IOEND = 0x00ff
.EQU SRAM_START = 0x0100
.EQU SRAM_SIZE = 2048
.EQU RAMEND = 0x08ff
.EQU XRAMEND = 0x0000
.EQU E2END = 0x03ff
.EQU EEPROMEND = 0x03ff
.EQU EEADRBITS = 10
#pragma AVRPART MEMORY PROG_FLASH 32768
#pragma AVRPART MEMORY EEPROM 1024
#pragma AVRPART MEMORY INT_SRAM SIZE 2048
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x100
; ***** BOOTLOADER DECLARATIONS ******************************************
.EQU NRWW_START_ADDR = 0x3800
.EQU NRWW_STOP_ADDR = 0x3FFF
.EQU RWW_START_ADDR = 0x0
.EQU RWW_STOP_ADDR = 0x37ff
.EQU PAGESIZE = 64
.EQU FIRSTBOOTSTART = 0x3f00
.EQU SECONDBOOTSTART = 0x3e00
.EQU THIRDBOOTSTART = 0x3c00
.EQU FOURTHBOOTSTART = 0x3800
.EQU SMALLBOOTSTART = FIRSTBOOTSTART
.EQU LARGEBOOTSTART = FOURTHBOOTSTART
; ***** INTERRUPT VECTORS ************************************************
.EQU INT0addr = 0x0002 ; 外部中断请求 0
.EQU INT1addr = 0x0004 ; 外部中断请求 1
.EQU PCI0addr = 0x0006 ; 引脚电平中断 0
.EQU PCI1addr = 0x0008 ; 引脚电平中断 1
.EQU PCI2addr = 0x000A ; 引脚电平中断 2
.EQU WDTaddr = 0x000C ; 看门狗溢出中断
.EQU OC2Aaddr = 0x000E ; 定时器 2 比较匹配 A 中断
.EQU OC2Baddr = 0x0010 ; 定时器 2 比较匹配 B 中断
.EQU OVF2addr = 0x0012 ; 定时器 2 溢出中断
.EQU ICP1addr = 0x0014 ; 定时器 1 输入捕捉中断
.EQU OC1Aaddr = 0x0016 ; 定时器 1 比较匹配 A 中断
.EQU OC1Baddr = 0x0018 ; 定时器 1 比较匹配 B 中断
.EQU OVF1addr = 0x001A ; 定时器 1 溢出中断
.EQU OC0Aaddr = 0x001C ; 定时器 0 比较匹配 A 中断
.EQU OC0Baddr = 0x001E ; 定时器 0 比较匹配 B 中断
.EQU OVF0addr = 0x0020 ; 定时器 0 溢出中断
.EQU SPIaddr = 0x0022 ; SPI 串行传输结束中断
.EQU URXCaddr = 0x0024 ; USART 接收结束中断
.EQU UDREaddr = 0x0026 ; USART 数据寄存器空中断
.EQU UTXCaddr = 0x0028 ; USART 发送结束中断
.EQU ADCCaddr = 0x002A ; ADC 转换结束中断
.EQU ERDYaddr = 0x002C ; EEPROM 就绪中断
.EQU ACIaddr = 0x002E ; 模拟比较器0中断
.EQU TWIaddr = 0x0030 ; 两线串行接口中断
.EQU ACI2addr = 0x0032 ; 模拟比较器1中断
; ; 保留
.EQU PCI3addr = 0x0036 ; 引脚电平中断 3
.EQU OPA0adr = 0x0038 ; OPA0内置定时器比较匹配中断
.EQU OPA1addr = 0x003A ; OPA1内置定时器比较匹配中断
.equ INT_VECTORS_SIZE= 60 ; size in words
#endif /* _328DDEF_INC_ */
|
|