⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bldc1-w.asm

📁 自己设计的水榜系统 用无刷电机控制的 包含原理图和源代码 相当有用
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;
;Z
;              R30(ZL) 
;              R31(ZH) 
;IJMP          间接跳转到(Z)     PC ← Z 无 2
;ICALL         间接调用(Z)       PC ← Z 无 3
;
;LD Rd, Z      加载间接寻址数据Rd ← (Z) 无2
;LD Rd, Z+     加载间接寻址数据,然后地址加一Rd ← (Z), Z ← Z+1 无2
;LD Rd, -Z     地址减一后加载间接寻址数据Z ← Z - 1, Rd ← (Z) 无2
;LDD Rd, Z+q   加载带偏移量的间接寻址数据Rd ← (Z + q) 无2
;
;ST Z, Rr      加载间接寻址数据(Z) ← Rr 无2
;ST Z+, Rr     加载间接寻址数据,然后地址加一(Z) ← Rr, Z ← Z + 1 无2
;ST -Z, Rr     地址减一后加载间接寻址数据Z ← Z - 1, (Z) ← Rr 无2
;STD Z+q,Rr    加载带偏移量的间接寻址数据(Z + q) ← Rr 无2
;
;LPM           加载程序空间的数据R0 ← (Z) 无3
;LPM Rd, Z     加载程序空间的数据Rd ← (Z) 无3
;LPM Rd, Z+    加载程序空间的数据,然后地址加一Rd ← (Z), Z ← Z+1 无3
;SPM           保存程序空间的数据(Z) ← R1:R0 无-
;
;----------------------------------------------------------------------------------------
; 端口定义:
;
; PB0    OUTPUT            0  WL
; PB1    OUTPUT            0  WH
; PB2    OUTPUT            0  VL
; PB3    OUTPUT            0  VH
; PB4    OUTPUT            0  UL
; PB5    OUTPUT            0  UH
; PB6    OUTPUT            0  NO USE  >>>> >>>>
; PB7    OUTPUT            0  NO USE  >>>> >>>>
;
; PC0    ADC               U
; PC1    ADC               V
; PC2    ADC               W
; PC3    OUTPUT            0  NO USE  >>>> >>>>      
; PC4    OUTPUT            0  NO USE  >>>> >>>>
; PC5    OUTPUT            0  NO USE  >>>> >>>>
; PC6    OUTPUT(RESET)     0  NO USE  >>>> >>>>
; ADC6   VDD1/4
; ADC7   NO USE
; 
; PD0    INPUT   PULL-UP   1  KEY
; PD1    OUTPUT            0  排水
; PD2    OUTPUT            0  NO USE
; PD3    INPUT   PULL-UP   1  SPEED 
; 用作结束速度测量,运行时中断禁止,仅仅在刹车时使用
;
; PD4    OUTPUT            0  LOCK
; 刹车时启动,旋转停止后释放
;
; PD5    OC0B              1  PWM_L
; 调速(只调低端的三个NMOS管) 
;
; PD6    OUTPUT            0  NO USE
; PD7    OUTPUT            0  NO USE
; 
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;寄存器概述:
;
;Address Name          Bit7     Bit 6    Bit 5    Bit 4    Bit 3     Bit 2    Bit 1    Bit 0 
;
;(0xFF)---(0xC7) Reserved
;
;(0xC6)      UDR0      USART I/O Data Register 
;(0xC5)      UBRR0H    -------- -------- -------- --------  USART Baud Rate Register High 
;(0xC4)      UBRR0L    USART Baud Rate Register Low 
;(0xC3)      Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;(0xC2)      UCSR0C    UMSEL01  UMSEL00  UPM01    UPM00     USBS0    UCSZ01   UCSZ00   UCPOL0 
;                                                                    /UDORD0  /UCPHA0
;(0xC1)      UCSR0B    RXCIE0   TXCIE0   UDRIE0   RXEN0     TXEN0    UCSZ02   RXB80    TXB80  
;(0xC0)      UCSR0A    RXC0     TXC0     UDRE0    FE0       DOR0     UPE0     U2X0     MPCM0  
;(0xBF)      Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;(0xBE)      Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;(0xBD)      TWAMR     TWAM6    TWAM5    TWAM4    TWAM3     TWAM2    TWAM1    TWAM0    --------  
;(0xBC)      TWCR      TWINT    TWEA     TWSTA    TWSTO     TWWC     TWEN     -------- TWIE  
;(0xBB)      TWDR      2-wire Serial Interface Data Register  
;(0xBA)      TWAR      TWA6     TWA5     TWA4     TWA3      TWA2     TWA1     TWA0     TWGCE  
;(0xB9)      TWSR      TWS7     TWS6     TWS5     TWS4      TWS3     -------- TWPS1    TWPS0  
;(0xB8)      TWBR      2-wire Serial Interface Bit Rate Register  
;(0xB7)      Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;(0xB6)      ASSR      -------- EXCLK    AS2      TCN2UB    OCR2AUB  OCR2BUB  TCR2AUB  TCR2BUB  
;(0xB5)      Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;(0xB4)      OCR2B     Timer/Counter2 Output Compare Register B  
;(0xB3)      OCR2A     Timer/Counter2 Output Compare Register A  
;(0xB2)      TCNT2     Timer/Counter2 (8-bit)      
;(0xB1)      TCCR2B    FOC2A    FOC2B    -------- --------  WGM22    CS22     CS21     CS20  
;(0xB0)      TCCR2A    COM2A1   COM2A0   COM2B1   COM2B0    -------- -------- WGM21    WGM20 
; 
;(0xAF)---(0x8C) Reserved
;
;(0x8B)      OCR1BH    Timer/Counter1 - Output Compare Register B High Byte  
;(0x8A)      OCR1BL    Timer/Counter1 - Output Compare Register B Low Byte  
;(0x89)      OCR1AH    Timer/Counter1 - Output Compare Register A High Byte  
;(0x88)      OCR1AL    Timer/Counter1 - Output Compare Register A Low Byte  
;(0x87)      ICR1H     Timer/Counter1 - Input Capture Register High Byte  
;(0x86)      ICR1L     Timer/Counter1 - Input Capture Register Low Byte  
;(0x85)      TCNT1H    Timer/Counter1 - Counter Register High Byte
;(0x84)      TCNT1L    Timer/Counter1 - Counter Register Low Byte
;(0x83)      Reserved  -------- -------- -------- --------  -------- -------- -------- --------  
;(0x82)      TCCR1C    FOC1A    FOC1B    -------- --------  -------- -------- -------- --------
;(0x81)      TCCR1B    ICNC1    ICES1    -------- WGM13     WGM12    CS12     CS11     CS10  
;(0x80)      TCCR1A    COM1A1   COM1A0   COM1B1   COM1B0    -------- -------- WGM11    WGM10  
;(0x7F)      DIDR1     -------- -------- -------- --------  -------- -------- AIN1D    AIN0D  
;(0x7E)      DIDR0     -------- -------- ADC5D    ADC4D     ADC3D    ADC2D    ADC1D    ADC0D  
;(0x7D)      Reserved  -------- -------- -------- --------  -------- -------- -------- --------  
;(0x7C)      ADMUX     REFS1    REFS0    ADLAR    --------  MUX3     MUX2     MUX1     MUX0  
;(0x7B)      ADCSRB    -------- ACME     -------- --------  -------- ADTS2    ADTS1    ADTS0 
;(0x7A)      ADCSRA    ADEN     ADSC    ADATE     ADIF      ADIE     ADPS2    ADPS1    ADPS0 
;(0x79)      ADCH      ADC Data Register High byte  
;(0x78)      ADCL      ADC Data Register Low byte  
;
;(0x77)--(0x71) Reserved
;
;(0x70)      TIMSK2    -------- -------- -------- --------  -------- OCIE2B   OCIE2A   TOIE2  
;(0x6F)      TIMSK1    -------- -------- ICIE1    --------  -------- OCIE1B   OCIE1A   TOIE1  
;(0x6E)      TIMSK0    -------- -------- -------- --------  -------- OCIE0B   OCIE0A   TOIE0  
;(0x6D)      PCMSK2    PCINT23  PCINT22  PCINT21  PCINT20   PCINT19  PCINT18  PCINT17  PCINT16  
;(0x6C)      PCMSK1    -------- PCINT14  PCINT13  PCINT12   PCINT11  PCINT10  PCINT9   PCINT8  
;(0x6B)      PCMSK0    PCINT7   PCINT6   PCINT5   PCINT4    PCINT3   PCINT2   PCINT1   PCINT0  
;(0x6A)      Reserved  -------- -------- -------- --------  -------- -------- -------- --------  
;(0x69)      EICRA     -------- -------- -------- --------  ISC11    ISC10    ISC01    ISC00  
;(0x68)      PCICR     -------- -------- -------- --------  -------- PCIE2    PCIE1    PCIE0
;(0x67)      Reserved  -------- -------- -------- --------  -------- -------- -------- --------  
;(0x66)      OSCCAL    Oscillator Calibration Register  
;(0x65)      Reserved  -------- -------- -------- --------  -------- -------- -------- --------  
;(0x64)      PRR       PRTWI    PRTIM2   PRTIM0   --------  PRTIM1   PRSPI    PRUSART0 PRADC  
;(0x63)      Reserved  -------- -------- -------- --------  -------- -------- -------- --------  
;(0x62)      Reserved  -------- -------- -------- --------  -------- -------- -------- --------  
;(0x61)      CLKPR     CLKPCE   -------- -------- --------  CLKPS3   CLKPS2   CLKPS1   CLKPS0  
;(0x60)      WDTCSR    WDIF     WDIE     WDP3     WDCE      WDE      WDP2     WDP1     WDP0  
;
;0x3F (0x5F) SREG      I        T        H        S         V        N        Z        C  
;0x3E (0x5E) SPH       (SP10=Only valid for ATmega88/168)                     SP9       SP8 
;0x3D (0x5D) SPL       SP7      SP6      SP5      SP4       SP3      SP2      SP1      SP0  
;0x3C (0x5C) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x3B (0x5B) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x3A (0x5A) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x39 (0x59) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x38 (0x58) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x37 (0x57) SPMCSR    SPMIE   (RWWSB)   -------- (RWWSRE)  BLBSET   PGWRT    PGERS    SELFPRGEN  
;                               =Only valid for ATmega88/168
;0x36 (0x56) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x35 (0x55) MCUCR     -------- -------- -------- PUD       -------- -------- IVSEL    IVCE
;0x34 (0x54) MCUSR     -------- -------- -------- --------  WDRF     BORF     EXTRF    PORF
;0x33 (0x53) SMCR      -------- -------- -------- --------  SM2      SM1      SM0      SE  
;0x32 (0x52) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x31 (0x51) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x30 (0x50) ACSR      ACD      ACBG     ACO      ACI       ACIE     ACIC     ACIS1    ACIS0 
;0x2F (0x4F) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x2E (0x4E) SPDR      SPI Data Register  
;0x2D (0x4D) SPSR      SPIF     WCOL     -------- --------  -------- -------- -------- SPI2X  
;0x2C (0x4C) SPCR      SPIE     SPE      DORD     MSTR      CPOL     CPHA     SPR1     SPR0  
;0x2B (0x4B) GPIOR2    General Purpose I/O Register 2  
;0x2A (0x4A) GPIOR1    General Purpose I/O Register 1  
;0x29 (0x49) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x28 (0x48) OCR0B     Timer/Counter0 Output Compare Register B
;0x27 (0x47) OCR0A     Timer/Counter0 Output Compare Register A
;0x26 (0x46) TCNT0     Timer/Counter0 (8-bit)
;0x25 (0x45) TCCR0B    FOC0A    FOC0B    -------- --------  WGM02    CS02     CS01     CS00
;0x24 (0x44) TCCR0A    COM0A1   COM0A0   COM0B1   COM0B0    -------- -------- WGM01    WGM00
;0x23 (0x43) GTCCR     TSM      -------- -------- --------  -------- -------- PSRASY   PSRSYNC  
;0x22 (0x42) EEARH     (EEPROM Address Register High Byte=Only valid for ATmega88/168) 
;0x21 (0x41) EEARL     EEPROM Address Register Low Byte  
;0x20 (0x40) EEDR      EEPROM Data Register  
;
;0x1F (0x3F) EECR      -------- -------- EEPM1    EEPM0     EERIE    EEMPE    EEPE     EERE  
;0x1E (0x3E) GPIOR0    General Purpose I/O Register 0  
;0x1D (0x3D) EIMSK     -------- -------- -------- --------  -------- -------- INT1     INT0  
;0x1C (0x3C) EIFR      -------- -------- -------- --------  -------- -------- INTF1    INTF0  
;0x1B (0x3B) PCIFR     -------- -------- -------- --------  -------- PCIF2    PCIF1    PCIF0
;0x1A (0x3A) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x19 (0x39) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x18 (0x38) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x17 (0x37) TIFR2     -------- -------- -------- --------  -------- OCF2B    OCF2A    TOV2  
;0x16 (0x36) TIFR1     -------- -------- ICF1     --------  -------- OCF1B    OCF1A    TOV1  
;0x15 (0x35) TIFR0     -------- -------- -------- --------  -------- OCF0B    OCF0A    TOV0
;0x14 (0x34) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x13 (0x33) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x12 (0x32) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x11 (0x31) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x10 (0x30) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x0F (0x2F) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x0E (0x2E) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x0D (0x2D) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x0C (0x2C) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x0B (0x2B) PORTD     PORTD7   PORTD6   PORTD5   PORTD4    PORTD3   PORTD2   PORTD1   PORTD0 
;0x0A (0x2A) DDRD      DDD7     DDD6     DDD5     DDD4      DDD3     DDD2     DDD1     DDD0  
;0x09 (0x29) PIND      PIND7    PIND6    PIND5    PIND4     PIND3    PIND2    PIND1    PIND0 
;0x08 (0x28) PORTC     -------- PORTC6   PORTC5   PORTC4    PORTC3   PORTC2   PORTC1   PORTC0 
;0x07 (0x27) DDRC      -------- DDC6     DDC5     DDC4      DDC3     DDC2     DDC1     DDC0  
;0x06 (0x26) PINC      -------- PINC6    PINC5    PINC4     PINC3    PINC2    PINC1    PINC0  
;0x05 (0x25) PORTB     PORTB7   PORTB6   PORTB5   PORTB4    PORTB3   PORTB2   PORTB1   PORTB0  
;0x04 (0x24) DDRB      DDB7     DDB6     DDB5     DDB4      DDB3     DDB2     DDB1     DDB0  
;0x03 (0x23) PINB      PINB7    PINB6    PINB5    PINB4     PINB3    PINB2    PINB1    PINB0  
;0x02 (0x22) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x01 (0x21) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
;0x00 (0x20) Reserved  -------- -------- -------- --------  -------- -------- -------- -------- 
; 
;1. For compatibility with future devices, reserved bits should be written to zero if accessed. 
;Reserved I/O memory addresses should never be written.
;2. I/O Registers within the address range 0x00 - 0x1F are directly bit-accessible using the SBI 
;and CBI instructions. In these registers, the value of single bits can be checked by using the 
;SBIS and SBIC instructions.
;3. Some of the Status Flags are cleared by writing a logical one to them. Note that, unlike most 
;other AVRs, the CBI and SBI instructions will only operate on the specified bit,and can therefore 
;be used on registers containing such Status Flags.The CBI and SBI instructions work with registers
;0x00 to 0x1F only.
;4. When using the I/O specific commands IN and OUT, the I/O addresses 0x00 - 0x3F must be used.
;When addressing I/O Registers as data space using LD and ST instructions, 0x20 must be added to 
;these addresses. The ATmega48/88/168 is a complex microcontroller with more peripheral units than
;can be supported within the 64 location reserved in Opcode for the IN and OUT instructions. For 
;the Extended I/O space from 0x60 - 0xFF in SRAM, only the ST/STS/STD and LD/LDS/LDD instructions
;can be used.
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;
;今后使用MEGA48 !!!!
;
;              .include   "m48def.inc"
               .include   "m88def.inc"
;
;R0
;R1
;
 .DEF   SREG_BAK                     = R2        ;---- ---- ---- ----  ---- ---- ---- ---- 
 .DEF   INT_R3                       = R3        ;---- ---- ---- ----  ---- ---- ---- ---- 
;

⌨️ 快捷键说明

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