stack.asm (854B)
1 start: 2 init: 3 clrf PORTA ; make sure port A output latches are low 4 clrf PORTB ; make sure port B output latches are low 5 bsf STATUS,RP0 ; select memory bank 1 6 movlw b'00000000' ; set port A data direction to inputs 7 movwf TRISA 8 movlw b'00001111' ; set port B data direction to outputs 9 movwf TRISB 10 bcf STATUS,RP0 ; select memory bank 0 11 12 ;stackptr EQU B10 13 tmpdata EQU B9 14 15 goto main 16 17 main: 18 ;movlw 0 19 ;movwf stackptr 20 21 movlw b'00000001' 22 movwf PORTA 23 24 movlw b'10100000' ; move 1111 to the output 25 movwf PORTB 26 27 movlw b'00000000' 28 movwf PORTA 29 30 movlw b'11111111' 31 movwf TRISB 32 33 movf PORTB, W 34 movwf tmpdata 35 36 movlw b'00001111' 37 movwf TRISB 38 39 swapf tmpdata, W 40 movwf PORTB 41 noend: 42 goto noend 43 END ; ends the program