AVR8BitASM.docx
- 文档编号:5095809
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:98
- 大小:29.18KB
AVR8BitASM.docx
《AVR8BitASM.docx》由会员分享,可在线阅读,更多相关《AVR8BitASM.docx(98页珍藏版)》请在冰豆网上搜索。
AVR8BitASM
#pragmaAVRPARTADMINPART_NAMEATmega16
#pragmaAVRPARTMEMORYPROG_FLASH16384
#pragmaAVRPARTMEMORYEEPROM512
#pragmaAVRPARTMEMORYINT_SRAMSIZE1119
#pragmaAVRPARTMEMORYINT_SRAMSTART_ADDR0x60
#defineCALL_SUPPORTED1
.LISTMAC
.EQUUDRE=0x5
.EQURXC=0x7
.EQUUSR=0xB
.EQUUDR=0xC
.EQUSPSR=0xE
.EQUSPDR=0xF
.EQUEERE=0x0
.EQUEEWE=0x1
.EQUEEMWE=0x2
.EQUEECR=0x1C
.EQUEEDR=0x1D
.EQUEEARL=0x1E
.EQUEEARH=0x1F
.EQUWDTCR=0x21
.EQUMCUCR=0x35
.EQUGICR=0x3B
.EQUSPL=0x3D
.EQUSPH=0x3E
.EQUSREG=0x3F
.DEFR0X0=R0
.DEFR0X1=R1
.DEFR0X2=R2
.DEFR0X3=R3
.DEFR0X4=R4
.DEFR0X5=R5
.DEFR0X6=R6
.DEFR0X7=R7
.DEFR0X8=R8
.DEFR0X9=R9
.DEFR0XA=R10
.DEFR0XB=R11
.DEFR0XC=R12
.DEFR0XD=R13
.DEFR0XE=R14
.DEFR0XF=R15
.DEFR0X10=R16
.DEFR0X11=R17
.DEFR0X12=R18
.DEFR0X13=R19
.DEFR0X14=R20
.DEFR0X15=R21
.DEFR0X16=R22
.DEFR0X17=R23
.DEFR0X18=R24
.DEFR0X19=R25
.DEFR0X1A=R26
.DEFR0X1B=R27
.DEFR0X1C=R28
.DEFR0X1D=R29
.DEFR0X1E=R30
.DEFR0X1F=R31
.EQU__SRAM_START=0x0060
.EQU__SRAM_END=0x045F
.EQU__DSTACK_SIZE=0x0100
.EQU__HEAP_SIZE=0x0000
.EQU__CLEAR_SRAM_SIZE=__SRAM_END-__SRAM_START+1
.MACRO__CPD1N
CPIR30,LOW(@0)
LDIR26,HIGH(@0)
CPCR31,R26
LDIR26,BYTE3(@0)
CPCR22,R26
LDIR26,BYTE4(@0)
CPCR23,R26
.ENDM
.MACRO__CPD2N
CPIR26,LOW(@0)
LDIR30,HIGH(@0)
CPCR27,R30
LDIR30,BYTE3(@0)
CPCR24,R30
LDIR30,BYTE4(@0)
CPCR25,R30
.ENDM
.MACRO__CPWRR
CPR@0,R@2
CPCR@1,R@3
.ENDM
.MACRO__CPWRN
CPIR@0,LOW(@2)
LDIR30,HIGH(@2)
CPCR@1,R30
.ENDM
.MACRO__ADDB1MN
SUBIR30,LOW(-@0-(@1))
.ENDM
.MACRO__ADDB2MN
SUBIR26,LOW(-@0-(@1))
.ENDM
.MACRO__ADDW1MN
SUBIR30,LOW(-@0-(@1))
SBCIR31,HIGH(-@0-(@1))
.ENDM
.MACRO__ADDW2MN
SUBIR26,LOW(-@0-(@1))
SBCIR27,HIGH(-@0-(@1))
.ENDM
.MACRO__ADDW1FN
SUBIR30,LOW(-2*@0-(@1))
SBCIR31,HIGH(-2*@0-(@1))
.ENDM
.MACRO__ADDD1FN
SUBIR30,LOW(-2*@0-(@1))
SBCIR31,HIGH(-2*@0-(@1))
SBCIR22,BYTE3(-2*@0-(@1))
.ENDM
.MACRO__ADDD1N
SUBIR30,LOW(-@0)
SBCIR31,HIGH(-@0)
SBCIR22,BYTE3(-@0)
SBCIR23,BYTE4(-@0)
.ENDM
.MACRO__ADDD2N
SUBIR26,LOW(-@0)
SBCIR27,HIGH(-@0)
SBCIR24,BYTE3(-@0)
SBCIR25,BYTE4(-@0)
.ENDM
.MACRO__SUBD1N
SUBIR30,LOW(@0)
SBCIR31,HIGH(@0)
SBCIR22,BYTE3(@0)
SBCIR23,BYTE4(@0)
.ENDM
.MACRO__SUBD2N
SUBIR26,LOW(@0)
SBCIR27,HIGH(@0)
SBCIR24,BYTE3(@0)
SBCIR25,BYTE4(@0)
.ENDM
.MACRO__ANDBMNN
LDSR30,@0+(@1)
ANDIR30,LOW(@2)
STS@0+(@1),R30
.ENDM
.MACRO__ANDWMNN
LDSR30,@0+(@1)
ANDIR30,LOW(@2)
STS@0+(@1),R30
LDSR30,@0+(@1)+1
ANDIR30,HIGH(@2)
STS@0+(@1)+1,R30
.ENDM
.MACRO__ANDD1N
ANDIR30,LOW(@0)
ANDIR31,HIGH(@0)
ANDIR22,BYTE3(@0)
ANDIR23,BYTE4(@0)
.ENDM
.MACRO__ANDD2N
ANDIR26,LOW(@0)
ANDIR27,HIGH(@0)
ANDIR24,BYTE3(@0)
ANDIR25,BYTE4(@0)
.ENDM
.MACRO__ORBMNN
LDSR30,@0+(@1)
ORIR30,LOW(@2)
STS@0+(@1),R30
.ENDM
.MACRO__ORWMNN
LDSR30,@0+(@1)
ORIR30,LOW(@2)
STS@0+(@1),R30
LDSR30,@0+(@1)+1
ORIR30,HIGH(@2)
STS@0+(@1)+1,R30
.ENDM
.MACRO__ORD1N
ORIR30,LOW(@0)
ORIR31,HIGH(@0)
ORIR22,BYTE3(@0)
ORIR23,BYTE4(@0)
.ENDM
.MACRO__ORD2N
ORIR26,LOW(@0)
ORIR27,HIGH(@0)
ORIR24,BYTE3(@0)
ORIR25,BYTE4(@0)
.ENDM
.MACRO__DELAY_USB
LDIR24,LOW(@0)
__DELAY_USB_LOOP:
DECR24
BRNE__DELAY_USB_LOOP
.ENDM
.MACRO__DELAY_USW
LDIR24,LOW(@0)
LDIR25,HIGH(@0)
__DELAY_USW_LOOP:
SBIWR24,1
BRNE__DELAY_USW_LOOP
.ENDM
.MACRO__GETD1S
LDDR30,Y+@0
LDDR31,Y+@0+1
LDDR22,Y+@0+2
LDDR23,Y+@0+3
.ENDM
.MACRO__GETD2S
LDDR26,Y+@0
LDDR27,Y+@0+1
LDDR24,Y+@0+2
LDDR25,Y+@0+3
.ENDM
.MACRO__PUTD1S
STDY+@0,R30
STDY+@0+1,R31
STDY+@0+2,R22
STDY+@0+3,R23
.ENDM
.MACRO__PUTD2S
STDY+@0,R26
STDY+@0+1,R27
STDY+@0+2,R24
STDY+@0+3,R25
.ENDM
.MACRO__PUTDZ2
STDZ+@0,R26
STDZ+@0+1,R27
STDZ+@0+2,R24
STDZ+@0+3,R25
.ENDM
.MACRO__CLRD1S
STDY+@0,R30
STDY+@0+1,R30
STDY+@0+2,R30
STDY+@0+3,R30
.ENDM
.MACRO__POINTB1MN
LDIR30,LOW(@0+(@1))
.ENDM
.MACRO__POINTW1MN
LDIR30,LOW(@0+(@1))
LDIR31,HIGH(@0+(@1))
.ENDM
.MACRO__POINTD1M
LDIR30,LOW(@0)
LDIR31,HIGH(@0)
LDIR22,BYTE3(@0)
LDIR23,BYTE4(@0)
.ENDM
.MACRO__POINTW1FN
LDIR30,LOW(2*@0+(@1))
LDIR31,HIGH(2*@0+(@1))
.ENDM
.MACRO__POINTD1FN
LDIR30,LOW(2*@0+(@1))
LDIR31,HIGH(2*@0+(@1))
LDIR22,BYTE3(2*@0+(@1))
LDIR23,BYTE4(2*@0+(@1))
.ENDM
.MACRO__POINTB2MN
LDIR26,LOW(@0+(@1))
.ENDM
.MACRO__POINTW2MN
LDIR26,LOW(@0+(@1))
LDIR27,HIGH(@0+(@1))
.ENDM
.MACRO__POINTW2FN
LDIR26,LOW(2*@0+(@1))
LDIR27,HIGH(2*@0+(@1))
.ENDM
.MACRO__POINTD2FN
LDIR26,LOW(2*@0+(@1))
LDIR27,HIGH(2*@0+(@1))
LDIR24,BYTE3(2*@0+(@1))
LDIR25,BYTE4(2*@0+(@1))
.ENDM
.MACRO__POINTBRM
LDIR@0,LOW(@1)
.ENDM
.MACRO__POINTWRM
LDIR@0,LOW(@2)
LDIR@1,HIGH(@2)
.ENDM
.MACRO__POINTBRMN
LDIR@0,LOW(@1+(@2))
.ENDM
.MACRO__POINTWRMN
LDIR@0,LOW(@2+(@3))
LDIR@1,HIGH(@2+(@3))
.ENDM
.MACRO__POINTWRFN
LDIR@0,LOW(@2*2+(@3))
LDIR@1,HIGH(@2*2+(@3))
.ENDM
.MACRO__GETD1N
LDIR30,LOW(@0)
LDIR31,HIGH(@0)
LDIR22,BYTE3(@0)
LDIR23,BYTE4(@0)
.ENDM
.MACRO__GETD2N
LDIR26,LOW(@0)
LDIR27,HIGH(@0)
LDIR24,BYTE3(@0)
LDIR25,BYTE4(@0)
.ENDM
.MACRO__GETB1MN
LDSR30,@0+(@1)
.ENDM
.MACRO__GETB1HMN
LDSR31,@0+(@1)
.ENDM
.MACRO__GETW1MN
LDSR30,@0+(@1)
LDSR31,@0+(@1)+1
.ENDM
.MACRO__GETD1MN
LDSR30,@0+(@1)
LDSR31,@0+(@1)+1
LDSR22,@0+(@1)+2
LDSR23,@0+(@1)+3
.ENDM
.MACRO__GETBRMN
LDSR@0,@1+(@2)
.ENDM
.MACRO__GETWRMN
LDSR@0,@2+(@3)
LDSR@1,@2+(@3)+1
.ENDM
.MACRO__GETWRZ
LDDR@0,Z+@2
LDDR@1,Z+@2+1
.ENDM
.MACRO__GETD2Z
LDDR26,Z+@0
LDDR27,Z+@0+1
LDDR24,Z+@0+2
LDDR25,Z+@0+3
.ENDM
.MACRO__GETB2MN
LDSR26,@0+(@1)
.ENDM
.MACRO__GETW2MN
LDSR26,@0+(@1)
LDSR27,@0+(@1)+1
.ENDM
.MACRO__GETD2MN
LDSR26,@0+(@1)
LDSR27,@0+(@1)+1
LDSR24,@0+(@1)+2
LDSR25,@0+(@1)+3
.ENDM
.MACRO__PUTB1MN
STS@0+(@1),R30
.ENDM
.MACRO__PUTW1MN
STS@0+(@1),R30
STS@0+(@1)+1,R31
.ENDM
.MACRO__PUTD1MN
STS@0+(@1),R30
STS@0+(@1)+1,R31
STS@0+(@1)+2,R22
STS@0+(@1)+3,R23
.ENDM
.MACRO__PUTB1EN
LDIR26,LOW(@0+(@1))
LDIR27,HIGH(@0+(@1))
CALL__EEPROMWRB
.ENDM
.MACRO__PUTW1EN
LDIR26,LOW(@0+(@1))
LDIR27,HIGH(@0+(@1))
CALL__EEPROMWRW
.ENDM
.MACRO__PUTD1EN
LDIR26,LOW(@0+(@1))
LDIR27,HIGH(@0+(@1))
CALL__EEPROMWRD
.ENDM
.MACRO__PUTBR0MN
STS@0+(@1),R0
.ENDM
.MACRO__PUTBMRN
STS@0+(@1),R@2
.ENDM
.MACRO__PUTWMRN
STS@0+(@1),R@2
STS@0+(@1)+1,R@3
.ENDM
.MACRO__PUTBZR
STDZ+@1,R@0
.ENDM
.MACRO__PUTWZR
STDZ+@2,R@0
STDZ+@2+1,R@1
.ENDM
.MACRO__GETW1R
MOVR30,R@0
MOVR31,R@1
.ENDM
.MACRO__GETW2R
MOVR26,R@0
MOVR27,R@1
.ENDM
.MACRO__GETWRN
LDIR@0,LOW(@2)
LDIR@1,HIGH(@2)
.ENDM
.MACRO__PUTW1R
MOVR@0,R30
MOVR@1,R31
.ENDM
.MACRO__PUTW2R
MOVR@0,R26
MOVR@1,R27
.ENDM
.MACRO__ADDWRN
SUBIR@0,LOW(-@2)
SBCIR@1,HIGH(-@2)
.ENDM
.MACRO__ADDWRR
ADDR@0,R@2
ADCR@1,R@3
.ENDM
.MACRO__SUBWRN
SUBIR@0,LOW(@2)
SBCIR@1,HIGH(@2)
.ENDM
.MACRO__SUBWRR
SUBR@0,R@2
SBCR@1,R@3
.ENDM
.MACRO__ANDWRN
ANDIR@0,LOW(@2)
ANDIR@1,HIGH(@2)
.ENDM
.MACRO__ANDWRR
ANDR@0,R@2
ANDR@1,R@3
.ENDM
.MACRO__ORWRN
ORIR@0,LOW(@2)
ORIR@1,HIGH(@2)
.ENDM
.MACRO__ORWRR
ORR@0,R@2
ORR@1,R@3
.ENDM
.MACRO__EORWRR
EORR@0,R@2
EORR@1,R@3
.ENDM
.MACRO__GETWRS
LDDR@0,Y+@2
LDDR@1,Y+@2+1
.ENDM
.MACRO__PUTBSR
STDY+@1,R@0
.ENDM
.MACRO__PUTWSR
STDY+@2,R@0
STDY+@2+1,R@1
.ENDM
.MACRO__MOVEWRR
MOVR@0,R@2
MOVR@1,R@3
.ENDM
.MACRO__INWR
INR@0,@2
INR@1,@2+1
.ENDM
.MACRO__OUTWR
OUT@2+1,R@1
OUT@2,R@0
.ENDM
.MACRO__CALL1MN
LDSR30,@0+(@1)
LDSR31,@0+(@1)+1
ICALL
.ENDM
.MACRO__CALL1FN
LDIR30,LOW(2*@0+(@1))
LDIR31,HIGH(2*@0+(@1))
CALL__GETW1PF
ICALL
.ENDM
.MACRO__CALL2EN
LDIR26,LOW(@0+(@1))
LDIR27,HIGH(@0+(@1))
CALL__EEPROMRDW
ICALL
.ENDM
.MACRO__GETW1STACK
INR26,SPL
INR27,SPH
ADIWR26,@0+1
LDR30,X+
LDR31,X
.ENDM
.MACRO__GETD1STACK
INR26,SPL
INR27,SPH
ADIWR26,@0+1
LDR30,X+
LDR31,X+
LDR22,X
.ENDM
.MACRO__NBST
BSTR@0,@1
INR30,SREG
LDIR31,0x40
EORR30,R31
OUTSREG,R30
.ENDM
.MACRO__PUTB1SN
LDDR26,Y+@0
LDDR27,Y+@0+1
SUBIR26,LOW(-@1)
SBCIR27,HIGH(-@1)
STX,R30
.ENDM
.MACRO__PUTW1SN
LDDR26,Y+@0
LDDR27,Y+@0+1
SUBIR26,LOW(-@1)
SBCIR27,HIGH(-@1)
STX+,R30
STX,R31
.ENDM
.MACRO__PUTD1SN
LDDR26,Y+@0
LDDR27,Y+@0+1
SUBIR26,LOW(-@1)
SBCIR27,HIGH(-@1)
CALL__PUTDP1
.ENDM
.MACRO__PUTB1SNS
LDDR26,Y+@0
LDDR27,Y+@0+1
ADIWR26,@1
STX,R30
.ENDM
.MACRO__PUTW1SNS
LDDR26,Y+@0
LDDR27,Y+@0+1
ADIWR26,@1
STX+,R30
STX,R31
.ENDM
.MACRO__PUTD1SNS
LDDR26,Y+@0
LDDR27,Y+@0+1
ADIWR26,@1
CALL__PUTDP1
.ENDM
.MACRO__PUTB1PMN
LDSR26,@0
LDSR27,@0+1
SUBIR26,LOW(-@1)
SBCIR27,HIGH(-@1)
STX,R30
.ENDM
.MACRO__PUTW1PMN
LDSR26,@0
LDSR27,@0+1
SUBIR26,LOW(-@1)
SBCIR27,HIGH(-@1)
STX+,R30
STX,R31
.ENDM
.MACRO__PUTD1PMN
LDSR26,@0
LDSR27,@0+1
SUBIR26,LOW(-@1)
SBCIR27,HIGH(-@1)
CALL__PUTDP1
.ENDM
.MACRO__PUTB1PMNS
LDSR26,@0
LDSR27,@0+1
ADIWR26,@1
STX,R30
.ENDM
.MACRO__PUTW1PMNS
LDSR26,@0
LDSR27,@0+1
ADIWR26,@1
STX+,R30
STX,R31
.ENDM
.MACRO__PUTD1PMNS
LDSR26,@0
LDSR27,@0+1
ADIWR26,@1
CALL__PUTDP1
.ENDM
.MACRO__PUTB1RN
MOVWR26,R@0
SUBIR26,LOW(-@1)
SBCIR27,HIGH(-@1)
STX,R30
.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR8BitASM