******************************************************************* ** ** ** PAS A PAS MOTOR ** ** ** ******************************************************************** * Commande d'un moteur pas a pas sur PORTB * Commande de direction : PORTA.3 =1 : Avance * PORTA.3 =0 : Recule * Commande de vitesse : PORTA.0 =1 : Accelere * PORTA.1 =1 : Ralenti PORTA equ $00 DDRA equ $1001 PORTB equ $1004 PORTC equ $1003 DDRD equ $1009 DDRC equ $1007 PORTF equ $1005 Vitesse rmb 1 org $FE00 *start of EEPROM lds #$0150 cli ldaa #$00 staa DDRA *PORTA en ENTREE ldaa #$FF staa DDRC *Recomm *Vitesse : *ldx #Step_Plus *ldd 0,x *std Vitesse ldaa 5000 staa Vitesse *************************************** *Programme principal *************************************** Top ldaa #$FF staa PORTF *Sens du deplacement ldy #$1000 brset PORTA,y,#$08 Avance * PA3 = 1 : avance brclr PORTA,y,#$08 Recule * PA3 = 0 : Recule Suite1 ldaa #$04 *8 valeurdans le vecteur Main ldaa 0,x staa PORTB bsr Delay inx deca bne Main bra Top *************************************** *************************************** *Détermine le sens de rotation : *************************************** Avance ldx #Step_Back jmp Suite1 Recule ldx #Step_Fwd jmp Suite1 *************************************** *Détermine la vitesse de rotation : *************************************** Delay ldy Vitesse Delay_Loop dey bne Delay_Loop rts *************************************** *Détermine les pas du moteur *************************************** Step_Fwd fcb %00000100,%00000010,%00001000,%00000001 *,%00000100,%00000010,%00001000,%00000001 Step_Back fcb %00001000,%00000010,%00000100,%00000001 *,%00001000,%00000010,%00000100,%00000001 *Step_Plus fcb %1000,$2000,$3000,$4000,$5000,6000,7000,8000,9000,10000 *************************************** *Détermine la vitesse de rotation : *************************************** Reinit ldaa PORTF adda 1 staa PORTF ldy #$1000 brset PORTA,y,#%00000001 Plus * PA0 = 1 : Accelere brset PORTA,y,#%00000010 Moins * PA1 = 1 : Ralenti *'Retour rti Moins ldd 1000 std Vitesse rti Plus ldd 10000 std Vitesse rti org $FFF2 * vecteur de IRQ irqvect fdb Reinit end