深圳市英锐恩科技有限公司 单片机集成方案全方位解决服务商 优质智能电子产品 芯 方案解决商 Microchip 产品用户参考手册 深圳市英锐恩科技有限公司 ENROO-TECH(SHENZHEN)CO.,LTD 中国 深圳市福田区福华路嘉汇新城汇商中心 27 楼 2701 Enroo-Tech Technologies CO., Limited Light-Tech International Limited 香港新界荃灣沙咀道 29-35 號科技中心 5 樓 5 室 联系电话 :86-755-82543411,83167411,83283911,61357155, 88845951 联系传真 :86-755-82543511 联系邮件 :enroo@enroo.com 公司网站 :http://www.enroo.com ; Add: 深圳市福田区福华路嘉汇新城汇商中心 27 楼 2701 Tel:+86-0755-82543411, Fax: +86-0755-82543511 http://www.enroo.com
!"#$ %&'( %)*+, -./01 23456789:;< = >?@ AB45CD EFG.HIJKLM N O P45QRSTUV NWO XY E Z[\]^ _` ab>cd1xqr 1 45> cde1> fghij >k[ lj]^_`qm nlj]^ _`QR KLbQmk[O_opm_` KLNQRk[qr_ ` stqrwqmk[xuljv E FG Z[ewx yxz h.hij45{_` ab }.HIJ~7] NO > e1>-\ƒ ey >! W "" 1># \ƒ $ 1> \ƒ }\ƒe > $ cdˆ Š Œr?EP NR ŽN > %$ QR e 1> }QR k[enr > %$ Š NR n.lj?enr > %& ' e1> > %& ˆ Š OR k[lj? P.H SNm Qm > %$ e1> šefg %$ W %$ >eš œ > %& E e1> cdˆ Š st žz[=]^ š=ÿ./01 ] Z[
s X E FG QR X ª Z[ EFG X (
ª Z[
ª ) Z[
) "" Z[
«MPASM 01.40 Released PSP64.ASM 1-16-1997 17:03:44 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ;********************************************************************* 00002 ;* 16C64/74 Parallel Slave port 00003 ;* This program demonstrates the Parallel Slave Port function of 00004 ;* the PIC16C64/74. The program is interrupt driven, when the PIC 00005 ;* is either read from or written to, an interrupt is generated. If 00006 ;* the interrupt was caused by a read, a register is incremented, and 00007 ;* the new count is placed in an output queue. If the interrupt was 00008 ;* caused by a write, the data is put on the Port B pins 00009 ; 00010 ; Program: PSP64.ASM 00011 ; Revision Date: 00012 ; 1-15-97 Compatibility with MPASMWIN 1.40 00013 ; 00014 ;;******************************************************************** 00015 list p=16c64 00016 ERRORLEVEL -302 00017 ; 00018 include "p16c64.inc" 00001 LIST 00002 ; P16C64.INC Standard Header File, Ver. 1.01 Microchip Technology, Inc. 00238 LIST 00019 00020 ;Register definitions 00000020 00021 FLAGREG equ 20h ;Flag bit register 00000021 00022 OUTDATA equ 21h ;Output data 00000022 00023 INDATA equ 22h ;Input data 00000023 00024 COUNT equ 23h ;Count of times output register read 00025 00026 ;Bit definitions for flag register 00000000 00027 err equ 00h ;Error flag bit 00000001 00028 OUTRDY equ 01h ;Output data ready flag 00000002 00029 INFULL equ 02h ;Input data received flag 00030 0000 00031 org 0000h ;Reset Vector 0000 2806 00032 goto Start 00033 0005 00034 org 0005h ;Interrupt Vector 0005 2820 00035 goto Service_Int
00036 0006 00037 Start 0006 01A1 00038 clrf OUTDATA ;Clear data registers 0007 01A2 00039 clrf INDATA 0008 1683 00040 bsf STATUS,RP0 ;Select register Bank1 0009 3017 00041 movlw b'00010111' ;Set RD, WR, and CS as 000A 0089 00042 movwf TRISE ; inputs, Enable Parallel Slave port 000B 30FF 00043 movlw 0FFh 000C 0086 00044 movwf TRISB ;Set Port_B to all outputs 000D 3080 00045 movlw b'10000000' ; 000E 008C 00046 movwf PIE1 ;Enable Parallel Slave Port interrupt 000F 1283 00047 bcf STATUS,RP0 ;Select register Bank0 00048 0010 0821 00049 movf OUTDATA,W ;Set output Data in PORTD 0011 0088 00050 movwf PORTD 0012 30C0 00051 movlw b'11000000' ;Set GIE, PEIE (enable interrupts) 0013 008B 00052 movwf INTCON 00053 0014 00054 Loop 0014 1920 00055 btfsc FLAGREG,INFULL ;Check if input data received 0015 2819 00056 goto Checkout ;No data ready, check output 0016 1120 00057 bcf FLAGREG,INFULL ;Clear input data ready flag 0017 0822 00058 movf INDATA,W ;Get Input data 0018 0086 00059 movwf PORTB ;Output input data to Port_B 0019 00060 Checkout 0019 18A0 00061 btfsc FLAGREG,OUTRDY ;Check if data output already 001A 2814 00062 goto Loop ;Not output yet, loop 001B 0AA3 00063 incf COUNT, F ;Increment output data 001C 0823 00064 movf COUNT,W ;Get output data 001D 00A1 00065 movwf OUTDATA ;Put data in output queue 001E 14A0 00066 bsf FLAGREG,OUTRDY ;Set flag for interrupt routine 001F 2814 00067 goto Loop 00068 00069 ;********************************************************************* 00070 ;*Interrupt Service Routine 00071 ;* Inputs: FLAGREG - Flag register to/from the main routine: 00072 ;* Bit 1: OUTRDY - To Service_Int, indicates 00073 ;* data ready in output queue 00074 ;* OUTDATA - Output data queue 00075 ;* PIR1 - Interrupt flag register 00076 ;* TRISE - Parallel slave port flag register 00077 ;* PORTD - Input data from slave port 00078 ;* 00079 ;* Outputs:
00080 ;* PORTD - Output data to slave port 00081 ;* INDATA - Input data queue 00082 ;* FLAGREG - Flag register to/from the main routine: 00083 ;* Bit 0: ERROR - From Service_Int, indicates 00084 ;* input buffer overflow 00085 ;* Bit 2: INFULL - From Service_Int, indicates 00086 ;* data received and in INDATA 00087 ;********************************************************************* 00088 0020 00089 Service_Int 0020 1F8C 00090 btfss PIR1,PSPIF ;Test for Peripheral interrupt 0021 2832 00091 goto Intout ;Not a Peripheral interrupt, exit 0022 138C 00092 bcf PIR1,PSPIF ;Clear Peripheral interrupt 0023 1683 00093 bsf STATUS,RP0 ;Select Bank1 0024 1F89 00094 btfss TRISE,IBF ;Check if input data ready 0025 282A 00095 goto Notinput ;No input, check output 0026 1283 00096 bcf STATUS,RP0 ;Input ready, select Bank0 0027 1520 00097 bsf FLAGREG,INFULL ;Set flag for main routine 0028 0808 00098 movf PORTD,W ;Get input data 0029 00A2 00099 movwf INDATA ;Put byte in input queue 002A 00100 Notinput 002A 1B09 00101 btfsc TRISE,OBF ;Check if output data read 002B 2832 00102 goto Intout ;Not read, exit 002C 1283 00103 bcf STATUS,RP0 ;Select Bank0 002D 1CA0 00104 btfss FLAGREG,OUTRDY ;Check if data in output queue 002E 2832 00105 goto Intout ;Output not read, exit 002F 0821 00106 movf OUTDATA,W ;Get data from queue 0030 0888 00107 movf PORTD, F ;Put data in output buffer 0031 10A0 00108 bcf FLAGREG,OUTRDY ;Clear flag for main routine 0032 00109 Intout 0032 1683 00110 bsf STATUS,RP0 ;Select Bank1 0033 1A89 00111 btfsc TRISE,IBOV ;Check input buffer overflow flag 0034 2837 00112 goto Interror ;If not clear, error 0035 1283 00113 bcf STATUS,RP0 ;Select Bank0 0036 0009 00114 retfie ;Re-enable GIE and return 0037 00115 Interror 0037 1283 00116 bcf STATUS,RP0 ;Select Bank0 0038 1420 00117 bsf FLAGREG,err ;Set error flag for main routin 0039 0009 00118 retfie ;Re-enable GIE and return 00119 00120 end MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : X----XXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXX------ All other memory blocks unused.
Program Memory Words Used: 54 Program Memory Words Free: 1994 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 6 suppressed
深圳市英锐恩科技有限公司 全球销售及服务网点 单片机集成方案全方位解决服务商 优质智能电子产品 芯 方案解决商 联系信息 : 深圳市英锐恩科技有限公司 ENROO-TECH(SHENZHEN)CO.,LTD 中国 深圳市福田区福华路嘉汇新城汇商中心 27 楼 2701 Enroo-Tech Technologies CO., Limited Light-Tech International Limited 香港新界荃灣沙咀道 29-35 號科技中心 5 樓 5 室 联系电话 :86-755-82543411,83167411,83283911,61357155, 88845951 联系传真 :86-755-82543511 联系邮件 :enroo@enroo.com 公司网站 :http://www.enroo.com ; Add: 深圳市福田区福华路嘉汇新城汇商中心 27 楼 2701 Tel:+86-0755-82543411, Fax: +86-0755-82543511 http://www.enroo.com