MPASM 03.70.01 Released LED1H.ASM 3-28-2006 22:18:58 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00002 ; 00003 ; Source File: LED1H.ASM 00004 ; Author: MPB 00005 ; Date: 2-12-05 00006 ; 00007 ; Output binary count incremented 00008 ; and reset with push buttons. 00009 ; Uses hardware timer to debounce input switch 00010 ; 00011 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00012 00013 PROCESSOR 16F877 ; Define MCU type 2007 3733 00014 __CONFIG 0x3733 ; Set config fuses 00015 00016 ; Register Label Equates.................................... 00017 00000006 00018 PORTB EQU 06 ; Port B Data Register 00000008 00019 PORTD EQU 08 ; Port D Data Register 00000088 00020 TRISD EQU 88 ; Port D Direction Register 00021 00000001 00022 TMR0 EQU 01 ; Hardware Timer Register 0000000B 00023 INTCON EQU 0B ; Interrupt Control Register 00000081 00024 OPTREG EQU 81 ; Option Register 00025 00026 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00027 0000 00028 ORG 000 ; Start of program memory 0000 0000 00029 NOP ; For ICD mode 0001 2806 00030 GOTO init ; Jump to main program 00031 00032 ; Interrupt Service Routine ................................ 00033 0004 00034 ORG 004 0004 110B 00035 BCF INTCON,2 ; Reset TMR0 interrupt flag 0005 0009 00036 RETFIE ; Return from interrupt 00037 00038 ; Initialise Port D (Port B defaults to inputs)............. 00039 0006 0000 00040 init NOP ; BANKSEL cannot be labelled 0007 1683 1303 00041 BANKSEL TRISD ; Select bank 1 0009 3000 00042 MOVLW b'00000000' ; Port B Direction Code Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 000A 0088 00043 MOVWF TRISD ; Load the DDR code into F86 00044 00045 ; Initialise Timer0 ........................................ 00046 000B 30D8 00047 MOVLW b'11011000' ; TMR0 initialisation code Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 000C 0081 00048 MOVWF OPTREG ; Int clock, no prescale 000D 1283 1303 00049 BANKSEL PORTD ; Select bank 0 000F 30A0 00050 MOVLW b'10100000' ; INTCON init. code 0010 008B 00051 MOVWF INTCON ; Enable TMR0 interrupt MPASM 03.70.01 Released LED1H.ASM 3-28-2006 22:18:58 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00052 00053 ; Start main loop ........................................... 00054 0011 0188 00055 reset CLRF PORTD ; Clear Port B Data 00056 0012 1C86 00057 start BTFSS PORTB,1 ; Test reset button 0013 2811 00058 GOTO reset ; and reset Port B if pressed 0014 1906 00059 BTFSC PORTB,2 ; Test step button 0015 2812 00060 GOTO start ; and repeat if not pressed 00061 0016 0181 00062 CLRF TMR0 ; Reset timer 0017 1D0B 00063 wait BTFSS INTCON,2 ; Check for time out 0018 2817 00064 GOTO wait ; Wait if not 0019 1D06 00065 stepin BTFSS PORTB,2 ; Check step button 001A 2819 00066 GOTO stepin ; and wait until released Message[305]: Using default destination of 1 (file). 001B 0A88 00067 INCF PORTD ; Increment output at Port B 001C 2812 00068 GOTO start ; Repeat main loop always 00069 00070 END ; Terminate source code...... MPASM 03.70.01 Released LED1H.ASM 3-28-2006 22:18:58 PAGE 3 SYMBOL TABLE LABEL VALUE INTCON 0000000B OPTREG 00000081 PORTB 00000006 PORTD 00000008 TMR0 00000001 TRISD 00000088 __16F877 00000001 init 00000006 reset 00000011 start 00000012 stepin 00000019 wait 00000017 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XX--XXXXXXXXXXXX XXXXXXXXXXXXX--- ---------------- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 27 Program Memory Words Free: 8165 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 3 reported, 0 suppressed Error[173] : source file path exceeds 62 characters (C:\A PIC INTERFACING BOOK PROJECT\PIC INTERFACING BOOK APPLICATIONS MARCH 06\A PPLICATIONS\CHAP04\LED1H\LED1H.ASM)