; PicBasic Pro Compiler 2.42a, (c) 1998, 2002 microEngineering Labs, Inc. All Rights Reserved. PM_USED EQU 1 INCLUDE "16F876.INC" ; Define statements. ; C:\PBP\16F876.BAS 00018 DEFINE CODE_SIZE 8 #define CODE_SIZE 8 RAM_START EQU 00020h RAM_END EQU 001EFh RAM_BANKS EQU 00004h BANK0_START EQU 00020h BANK0_END EQU 0007Fh BANK1_START EQU 000A0h BANK1_END EQU 000EFh BANK2_START EQU 00110h BANK2_END EQU 0016Fh BANK3_START EQU 00190h BANK3_END EQU 001EFh EEPROM_START EQU 02100h EEPROM_END EQU 021FFh ; C:\PBP\PBPPIC14.RAM 00012 R0 VAR WORD BANK0 SYSTEM ' System Register R0 EQU RAM_START + 000h ; C:\PBP\PBPPIC14.RAM 00013 R1 VAR WORD BANK0 SYSTEM ' System Register R1 EQU RAM_START + 002h ; C:\PBP\PBPPIC14.RAM 00014 R2 VAR WORD BANK0 SYSTEM ' System Register R2 EQU RAM_START + 004h ; C:\PBP\PBPPIC14.RAM 00015 R3 VAR WORD BANK0 SYSTEM ' System Register R3 EQU RAM_START + 006h ; C:\PBP\PBPPIC14.RAM 00016 R4 VAR WORD BANK0 SYSTEM ' System Register R4 EQU RAM_START + 008h ; C:\PBP\PBPPIC14.RAM 00017 R5 VAR WORD BANK0 SYSTEM ' System Register R5 EQU RAM_START + 00Ah ; C:\PBP\PBPPIC14.RAM 00018 R6 VAR WORD BANK0 SYSTEM ' System Register R6 EQU RAM_START + 00Ch ; C:\PBP\PBPPIC14.RAM 00019 R7 VAR WORD BANK0 SYSTEM ' System Register R7 EQU RAM_START + 00Eh ; C:\PBP\PBPPIC14.RAM 00020 R8 VAR WORD BANK0 SYSTEM ' System Register R8 EQU RAM_START + 010h ; C:\PBP\PBPPIC14.RAM 00026 FLAGS VAR BYTE BANK0 SYSTEM ' Static flags FLAGS EQU RAM_START + 012h ; C:\PBP\PBPPIC14.RAM 00025 GOP VAR BYTE BANK0 SYSTEM ' Gen Op Parameter GOP EQU RAM_START + 013h ; C:\PBP\PBPPIC14.RAM 00022 RM1 VAR BYTE BANK0 SYSTEM ' Pin 1 Mask RM1 EQU RAM_START + 014h ; C:\PBP\PBPPIC14.RAM 00024 RM2 VAR BYTE BANK0 SYSTEM ' Pin 2 Mask RM2 EQU RAM_START + 015h ; C:\PBP\PBPPIC14.RAM 00021 RR1 VAR BYTE BANK0 SYSTEM ' Pin 1 Register RR1 EQU RAM_START + 016h ; C:\PBP\PBPPIC14.RAM 00023 RR2 VAR BYTE BANK0 SYSTEM ' Pin 2 Register RR2 EQU RAM_START + 017h ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00009 n var byte _n EQU RAM_START + 018h ; C:\PBP\16F876.BAS 00022 PORTL VAR PORTB _PORTL EQU PORTB ; C:\PBP\16F876.BAS 00023 PORTH VAR PORTC _PORTH EQU PORTC ; C:\PBP\16F876.BAS 00024 TRISL VAR TRISB _TRISL EQU TRISB ; C:\PBP\16F876.BAS 00025 TRISH VAR TRISC _TRISH EQU TRISC #define _PORTB_6 PORTB, 006h #define _PORTB_0 PORTB, 000h #define _PORTB_7 PORTB, 007h ; Constants. _T2400 EQU 00000h _T1200 EQU 00001h _T9600 EQU 00002h _T300 EQU 00003h _N2400 EQU 00004h _N1200 EQU 00005h _N9600 EQU 00006h _N300 EQU 00007h _OT2400 EQU 00008h _OT1200 EQU 00009h _OT9600 EQU 0000Ah _OT300 EQU 0000Bh _ON2400 EQU 0000Ch _ON1200 EQU 0000Dh _ON9600 EQU 0000Eh _ON300 EQU 0000Fh _MSBPRE EQU 00000h _LSBPRE EQU 00001h _MSBPOST EQU 00002h _LSBPOST EQU 00003h _LSBFIRST EQU 00000h _MSBFIRST EQU 00001h _CLS EQU 00000h _HOME EQU 00001h _BELL EQU 00007h _BKSP EQU 00008h _TAB EQU 00009h _CR EQU 0000Dh _UnitOn EQU 00012h _UnitOff EQU 0001Ah _UnitsOff EQU 0001Ch _LightsOn EQU 00014h _LightsOff EQU 00010h _Dim EQU 0001Eh _Bright EQU 00016h INCLUDE "SERINOUT.MAC" INCLUDE "PBPPIC14.LIB" ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00001 'Test program to blink an LED connected to PORTB.0 ; C:\PBP\16F876.BAS 00012 BANK0 $0020, $007F ; C:\PBP\16F876.BAS 00013 BANK1 $00A0, $00EF ; C:\PBP\16F876.BAS 00014 BANK2 $0110, $016F ; C:\PBP\16F876.BAS 00015 BANK3 $0190, $01EF ; C:\PBP\16F876.BAS 00016 EEPROM $2100, $21FF ; C:\PBP\16F876.BAS 00017 LIBRARY "PBPPIC14" ; C:\PBP\16F876.BAS 00018 DEFINE CODE_SIZE 8 ; C:\PBP\16F876.BAS 00020 include "PIC14EXT.BAS" ; C:\PBP\16F876.BAS 00027 include "PBPPIC14.RAM" ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00007 @ Device Pic16F876, XT_OSC, Wdt_Off, Pwrt_On, Bod_On, Lvp_Off, Cpd_Off, Protect_Off ASM? Device Pic16F876, XT_OSC, Wdt_Off, Pwrt_On, Bod_On, Lvp_Off, Cpd_Off, Protect_Off ENDASM? ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00008 Include "modedefs.bas" ' Include serial modes ; C:\PBP\MODEDEFS.BAS 00014 Symbol T2400 = 0 ' Driven True ; C:\PBP\MODEDEFS.BAS 00015 Symbol T1200 = 1 ' Driven True ; C:\PBP\MODEDEFS.BAS 00016 Symbol T9600 = 2 ' Driven True ; C:\PBP\MODEDEFS.BAS 00017 Symbol T300 = 3 ' Driven True ; C:\PBP\MODEDEFS.BAS 00019 Symbol N2400 = 4 ' Driven Inverted ; C:\PBP\MODEDEFS.BAS 00020 Symbol N1200 = 5 ' Driven Inverted ; C:\PBP\MODEDEFS.BAS 00021 Symbol N9600 = 6 ' Driven Inverted ; C:\PBP\MODEDEFS.BAS 00022 Symbol N300 = 7 ' Driven Inverted ; C:\PBP\MODEDEFS.BAS 00024 Symbol OT2400 = 8 ' Open True ; C:\PBP\MODEDEFS.BAS 00025 Symbol OT1200 = 9 ' Open True ; C:\PBP\MODEDEFS.BAS 00026 Symbol OT9600 = 10 ' Open True ; C:\PBP\MODEDEFS.BAS 00027 Symbol OT300 = 11 ' Open True ; C:\PBP\MODEDEFS.BAS 00029 Symbol ON2400 = 12 ' Open Inverted ; C:\PBP\MODEDEFS.BAS 00030 Symbol ON1200 = 13 ' Open Inverted ; C:\PBP\MODEDEFS.BAS 00031 Symbol ON9600 = 14 ' Open Inverted ; C:\PBP\MODEDEFS.BAS 00032 Symbol ON300 = 15 ' Open Inverted ; C:\PBP\MODEDEFS.BAS 00036 Symbol MSBPRE = 0 ' MSB first, sample before clock ; C:\PBP\MODEDEFS.BAS 00037 Symbol LSBPRE = 1 ' LSB first, sample before clock ; C:\PBP\MODEDEFS.BAS 00038 Symbol MSBPOST = 2 ' MSB first, sample after clock ; C:\PBP\MODEDEFS.BAS 00039 Symbol LSBPOST = 3 ' LSB first, sample after clock ; C:\PBP\MODEDEFS.BAS 00042 Symbol LSBFIRST = 0 ' LSB first ; C:\PBP\MODEDEFS.BAS 00043 Symbol MSBFIRST = 1 ' MSB first ; C:\PBP\MODEDEFS.BAS 00047 Symbol CLS = 0 ; C:\PBP\MODEDEFS.BAS 00048 Symbol HOME = 1 ; C:\PBP\MODEDEFS.BAS 00049 Symbol BELL = 7 ; C:\PBP\MODEDEFS.BAS 00050 Symbol BKSP = 8 ; C:\PBP\MODEDEFS.BAS 00051 Symbol TAB = 9 ; C:\PBP\MODEDEFS.BAS 00052 Symbol CR = 13 ; C:\PBP\MODEDEFS.BAS 00056 Symbol UnitOn = %10010 ; C:\PBP\MODEDEFS.BAS 00057 Symbol UnitOff = %11010 ; C:\PBP\MODEDEFS.BAS 00058 Symbol UnitsOff = %11100 ; C:\PBP\MODEDEFS.BAS 00059 Symbol LightsOn = %10100 ; C:\PBP\MODEDEFS.BAS 00060 Symbol LightsOff = %10000 ; C:\PBP\MODEDEFS.BAS 00061 Symbol Dim = %11110 ; C:\PBP\MODEDEFS.BAS 00062 Symbol Bright = %10110 ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00010 pause 100 PAUSE?C 064h ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00011 loop: LABEL?L _loop ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00013 serin portb.6,N2400,n SERPIN?T _PORTB_6 SERMODE?C _N2400 SERIN?B _n ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00015 High portb.0 ' Turn on LED connected to PORTB.0 HIGH?T _PORTB_0 ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00016 Pause 50 ' Delay for 50 milliseconds PAUSE?C 032h ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00017 Low portb.0 ' Turn off LED connected to PORTB.0 LOW?T _PORTB_0 ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00018 Pause 50 ' Delay for 50 milliseconds PAUSE?C 032h ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00020 Serout portb.7,N2400,[n] SERPIN?T _PORTB_7 SERMODE?C _N2400 SEROUT?B _n ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00023 Goto loop ' Go back to loop forever GOTO?L _loop ; C:\PBP\PICKEY TEST\SERINOUT876\SERINOUT.BAS 00024 End END? END