;*******************************************************************

;аааааааааааааааааааааааааа PICADC.ASM

;ааа The software for PIC-controlled ADC converter

;ааа Written by Wojciech M. Zabolotny (wzab@ise.pw.edu.pl)

;ааа this software is available under so called "Artistic License"

;ааа (see http://language.perl.com/misc/Artistic.html for details)

;*******************************************************************

ааааааа LISTааа p=16f84 ; PIC16F84 is the target processor

ааааааааааа #include "P16f84.INC" ; Include header fileаааа

;ааааааа LISTааа p=16c84 ; PIC16C84 is the target processor

;аааааааааа #include "P16c84.INC" ; Include header fileааа

ааааааааааа __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

ааааааааааа ;Definitions of pins used to drive the ADC

ааааааааааа #define cs PORTB,5

ааааааааааа #define sclk PORTB,4

ааааааааааа #define sdata PORTA,0

ааааааааааа ;Definition of port used to drive the analog inputs multiplexer

ааааааааааа #define mux PORTA

ааааааааааа ;Definition of port and pins used for RS232 intrface

ааааааааааа #define PortRS PORTB

ааааааааааа #define TxRS 0

ааааааааааа #define RxRS 6

ааааааааааа ;Definition of digital inputs

ааааааааааа #define DIN0 PORTB,2

ааааааааааа #define DIN1 PORTB,3

ааааааааааа #define DIN2 PORTB,7

ааааааааааа #define DIN3 PORTB,1

ааааааааааа ;Definition of configuration words

ааааааааааа #define CONFA (B'11110001')а ; will be written to TRISA

ааааааааааа #define CONFB (B'11001110')а ; will be written to TRISB

ааааааааааа #define OPTION_VAL (B'01111111') ; will be written to OPTION_REG

ааааааааааа ;Bit flags

ааааааааааа #define last_chan uflags,0

ааааааааааа #define odd_chan uflags,1

ааааааааааа #define odd_chan_maskааааааааа 0x2

ааааааааааа #define skip_dig_inputs cflags,0

ааааааааааа #define br115 cflags,7

ааааааааааа #define br57а cflags,6

ааааааааааа orgаааааа 0x0c

byte1аа resаааааа 1

byte2аа resаааааа 1

chan_nrааааааааааа resаааааа 1

nof_chan resааа 1

ChanTable res 8

fdelааааа resаааааа 1

del0аааа resаааааа 1

del1аааа resаааааа 1

del2аааа resаааааа 1

cflagsаа resаааааа 1

#define CONF_LEN (cflags-nof_chan+1)

count0а resаааааа 1

count1а resаааааа 1

count2а resаааааа 1

uflagsаа resаааааа 1

BufDel resаааааа 1

BufRSа resаааааа 1

BufRxа res ааааа 1

UserCnt resаааа 1

RecCntааааааааааа resаааааа 1

ChkSumааааааааа resаааааа 1

ааааааааааа orgаааааа 0

ааааааааааа gotoаааа start

; Interface to the MAX190/191 emulating the QSPI timing with CPOL=0,

; CPHA=1.

;

;The delay macro time of execution: 1+3*del cycles

delayааа macroа del

ааааааааааа movlwа del

ааааааааааа movwfа BufDel

ааааааааааа LOCAL del_loop=$

ааааааааааа decfszа BufDel,F

ааааааааааа goto del_loop

ааааааааааа endm

 

;The delay subroutine for precise delays

ааааааааааа #define FINEDEL_N 0x80

finedel_p:

ааааааааааа addwfа PCL,F

ааааааааааа variable i

i = 0

ааааааааааа while i<FINEDEL_N

ааааааааааа nop

i += 1

ааааааааааа endw

ааааааааааа return

;Macro using the above subroutine

finedelа macroа n_of_cycles

ааааааааааа if n_of_cycles < 7

ааааааааааа а ERROR "Too short delay"

ааааааааааа endif

ааааааааааа if n_of_cycles > FINEDEL_N + 7

ааааааааааа а ERROR "Too long delay"ааааа

ааааааааааа endif

ааааааааааа movlwа FINEDEL_N-n_of_cycles+7

ааааааааааа callаааааа finedel_p

ааааааааааа endm

;The table with identification string (must not cross the page boundary!!!)

Welcomeаааааааа movfааа UserCnt,W

ааааааааааа addwfа PCL,F

ааааааааааа DTаааааа "WZPICADC100003\n",0

WaitEndBreak

;Wait for the end of resetting BREAK event

ааааааааааа btfssаааа PortRS,RxRS

ааааааааааа gotoаааа WaitEndBreak

startаааа

;Configure A & B ports

ааааааааааа BANKSEL TRISB

ааааааааааа movlwа CONFB

ааааааааааа movwfа TRISB

ааааааааааа movlwа CONFA

ааааааааааа movwfа TRISA

ааааааааааа movlwа OPTION_VAL

ааааааааааа movwfа OPTION_REG

ааааааааааа BANKSELааааа PORTB

;Send the identification string

ааааааааааа clrfаааааа UserCnt

WelcLoop

ааааааааааа callаааааа Welcome

ааааааааааа iorlwааа 0

ааааааааааа btfscаааа STATUS,Z

ааааааааааа gotoаааа WelcExit

ааааааааааа callаааааа SendRS19

ааааааааааа incfаааааа UserCnt,f

ааааааааааа gotoаааа WelcLoop

WelcExit

;The identification string is sent, wait for configuration bytes,

;calculating the checksum in ChkSum

ааааааааааа clrfаааааа ChkSum

ааааааааааа movlwа CONF_LEN

ааааааааааа movwfа UserCnt

ааааааааааа movlwа nof_chan

ааааааааааа movwfа FSR

ConfLoop

ааааааааааа callаааааа RecvRS19

;Check, if it is not a BREAK

ааааааааааа iorlwааа 0

ааааааааааа btfssаааа STATUS,Z

ааааааааааа gotoаааа WaitEndBreak

ааааааааааа movfааа BufRS,W

ааааааааааа addwfа ChkSum,F

ааааааааааа btfscаааа STATUS,C

ааааааааааа incfаааааа ChkSum,F

ааааааааааа movwfа INDF

ааааааааааа incfаааааа FSR,F

ааааааааааа decfszа UserCnt,F

ааааааааааа gotoаааа ConfLoop

;The configuration is read, send the checksum

ааааааааааа movfааа ChkSum,W

ааааааааааа callаааааа SendRS19

;Now wait for "0" byte sent with 115200 baudrate (or resetting BREAK event)

ааааааааааа clrfаааааа UserCnt

Loop1: btfscаааа PortRS,RxRS

ааааааааааа gotoаааа Loop1 ; Wait for "0"

Loop2: incfszааа UserCnt,F

ааааааааааа gotoаааа Loop3

ааааааааааа gotoаааа WaitEndBreak ; "0" pulse was too long!

Loop3а btfssаааа PortRS,RxRS

ааааааааааа gotoаааа Loop2 ; Wait for "1"

;Now start the conversions !!!а

;Set the multiplexer to the first channel

ааааааааааа movlwа ChanTable-1

ааааааааааа addwfа nof_chan,W

ааааааааааа movwfа FSR

ааааааааааа movfааа INDF,W

ааааааааааа movwfа mux

ааааааааааа clrfаааааа RecCnt

;The main sampling loop

SmpLoop:

ааааааааааа movfааа nof_chan,W

ааааааааааа movwfа chan_nr

ааааааааааа bcfаааааа last_chan

ааааааааааа bcfаааааа odd_chanа ;Clear the odd channel flag

sample_next_chan:

;Now convert the analog voltage and read the data

ааааааааааа clrfаааааа byte1

ааааааааааа btfssаааа odd_chanа ;If even channel - clear the byte2

ааааааааааа clrfаааааа byte2

ааааааааааа btfscаааа odd_chanа ;If odd channel - swap the byte2

ааааааааааа swapfаа byte2,F

ааааааааааа bcfаааааа cs

ааааааааааа bcfаааааа sclk

ааааааааааа bsfаааааа sclk

ааааааааааа bcfаааааа sclkааааа ;D11 (MSB) is present on sdata

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte1,7

ааааааааааа bcfаааааа sclkааааа ;D10

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte1,6

ааааааааааа bcfаааааа sclkааааа ;D09

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte1,5

ааааааааааа bcfаааааа sclkааааа ;D08

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte1,4

ааааааааааа bcfаааааа sclkааааа ;D07

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte1,3

ааааааааааа bcfаааааа sclkааааа ;D06

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte1,2

ааааааааааа bcfаааааа sclkааааа ;D05

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte1,1

ааааааааааа bcfаааааа sclkааааа ;D04

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte1,0

ааааааааааа bcfаааааа sclkааааа ;D03

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte2,7

ааааааааааа bcfаааааа sclkааааа ;D02

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte2,6

ааааааааааа bcfаааааа sclkааааа ;D01

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte2,5

ааааааааааа bcfаааааа sclkааааа ;D00 (LSB)

ааааааааааа bsfаааааа sclk

ааааааааааа btfscаааа sdata

ааааааааааа bsfаааааа byte2,4

ааааааааааа bcfаааааа sclk

ааааааааааа bsfаааааа sclk

ааааааааааа bsfаааааа cs

; The conversion is finished - now set the multiplexer to next channel

ааааааааааа decfszа chan_nr,F

ааааааааааа gotoаааа chan_not_zero

ааааааааааа movfааа nof_chan,W

ааааааааааа movwfа chan_nr

ааааааааааа bsfаааааа last_chan

chan_not_zero:

ааааааааааа ;Load the channel number from the table

ааааааааааа movlwа ChanTable-1

ааааааааааа addwfа chan_nr,W

ааааааааааа movwfа FSR

ааааааааааа movfааа INDF,W

ааааааааааа movwfа mux

; Check if the BREAK event occured

ааааааааааа btfssаааа PortRS,RxRS

ааааааааааа gotoаааа WaitEndBreak

; Now we send the data through the RS interface

;If it was the even channel, we send only the first byte

ааааааааааа btfssаааа odd_chan

ааааааааааа gotoаааа not_odd_jump1

ааааааааааа movfааа byte2,W

ааааааааааа callаааааа SendRSHiBr

not_odd_jump1

ааааааааааа movfааа byte1,W

ааааааааааа callаааааа SendRSHiBr

ааааааааааа ;Now we toggle the channel flag

ааааааааааа movlwа odd_chan_mask

ааааааааааа xorwfаа uflags,F

; Finally if it was not the last channel,

; we jump to the sampling of next channel

ааааааааааа btfssаааа last_chan

ааааааааааа goto ааа sample_next_chan

; If there is no jump, all channels have been sampled

; Now send the last nibble, if number of channels is odd

ааааааааааа btfssаааа odd_chan

ааааааааааа gotoаааа not_odd_jmp2 ; if the next sampled channel would be even,

аааааааааааааааааааааааааааааааааа аааа ; there is no nibble to send

ааааааааааа swapfаа byte2,W

ааааааааааа callаааааа SendRSHiBr

not_odd_jmp2:

; Send the digital inputs state and record count, if it is required

ааааааааааа btfscаааа skip_dig_inputs

ааааааааааа gotoаааа skip_dig_inp

ааааааааааа incfаааааа RecCnt,F

ааааааааааа movfааа RecCnt,W

ааааааааааа andlwаа 0x0f

ааааааааааа movwfа BufRS

ааааааааааа btfscаааа DIN0

ааааааааааа bsfаааааа BufRS,4

ааааааааааа btfscаааа DIN1

ааааааааааа bsfаааааа BufRS,5

ааааааааааа btfscаааа DIN2

ааааааааааа bsfаааааа BufRS,6

ааааааааааа btfscаааа DIN3

ааааааааааа bsfаааааа BufRS,7

ааааааааааа movfааа BufRS,W

ааааааааааа callаааааа SendRSHiBr

skip_dig_inp:

; Now the delay loop, and back to the start of sampling loop

ааааааааааа movfааа del0,W

ааааааааааа movwfа count0

ааааааааааа movfааа del1,W

ааааааааааа movwfа count1

ааааааааааа movfааа del2,W

ааааааааааа movwfа count2

SmpDel:

;Check, if the BREAK event occured

ааааааааааа btfssаааа PortRS,RxRS

ааааааааааа gotoаааа WaitEndBreak

ааааааааааа incfаааааа count0,F

ааааааааааа btfscаааа STATUS,Z

ааааааааааа incfаааааа count1,F

ааааааааааа btfscаааа STATUS,Zааааа

ааааааааааа incfаааааа count2,F

ааааааааааа btfssаааа STATUS,Z

ааааааааааа gotoаааа SmpDelаааааааааа

;Now the precise delay

ааааааааааа movfааа fdel,W

ааааааааааа callаааааа finedel_p

ааааааааааа gotoаааа SmpLoop

 

 

; The subroutine for sending of byte in "W" through the RS232 interface

; with high baudrate (115200, 57600 or 38400) and with parity even

SendRSHiBr:

ааааааааааа ; Send the start bit

ааааааааааа bcfаааааа PortRS,TxRS

; start bit 0 us

ааааааааааа clrfаааааа UserCnt

ааааааааааа movwfа BufRS

ааааааааааа btfssаааа br115ааа ;Check if baudrate 115200 is used

ааааааааааа gotoаааа SendRS57

ааааааааааа btfscаааа BufRS,0

ааааааааааа incfаааааа UserCnt,F

ааааааааааа nop

ааааааааааа btfscаааа BufRS,0

ааааааааааа bsfаааааа PortRS,TxRS ; We know that the Tx was set to 0 by the start bit

; bit 0а 9us

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа BufRS,1

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа btfscаааа BufRS,1

ааааааааааа incfаааааа UserCnt,F

ааааааааааа nop

ааааааааааа movwfа PortRS

; bit 1 17us

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа BufRS,2

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа btfscаааа BufRS,2

ааааааааааа incfаааааа UserCnt,F

ааааааааааа nop

ааааааааааа nop

ааааааааааа movwfа PortRS

; bit 2 26us

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа BufRS,3

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа btfscаааа BufRS,3

ааааааааааа incfаааааа UserCnt,F

ааааааааааа nop

ааааааааааа nop

ааааааааааа movwfа PortRS

; bit 3 35us

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа BufRS,4

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа btfscаааа BufRS,4

ааааааааааа incfаааааа UserCnt,F

ааааааааааа nop

ааааааааааа movwfа PortRS

; bit 4 43us

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа BufRS,5

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа btfscаааа BufRS,5

ааааааааааа incfаааааа UserCnt,F

ааааааааааа nop

ааааааааааа nop

ааааааааааа movwfа PortRS

; bit 5 52us

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа BufRS,6

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа btfscаааа BufRS,6

ааааааааааа incfаааааа UserCnt,F

ааааааааааа nop

ааааааааааа nop

ааааааааааа movwfа PortRS

; bit 6 61us

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа BufRS,7

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа btfscаааа BufRS,7

ааааааааааа incfаааааа UserCnt,F

ааааааааааа nop

ааааааааааа movwfа PortRS

; bit 7 69us

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа UserCnt,0

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа nop

ааааааааааа nop

ааааааааааа nop

ааааааааааа nop

ааааааааааа movwfа PortRS

; parity bitа 78us

ааааааааааа delayааа 2

ааааааааааа nop

ааааааааааа bsfаааааа PortRS,TxRS

; bit stopu 87us

ааааааааааа delayааа 2

ааааааааааа return

 

; The procedure for sending of byte trough RS with 19200 baud

; The auxiliary macro - testing of bit and setting of TxRS

SetTxRS macro n_of_bit

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа BufRS,n_of_bit

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа movwfа PortRS

ааааааааааа endm

 

SendRS19:

; Send the start bit

ааааааааааа bcfаааааа PortRS,TxRS

ааааааааааа movwfа BufRS

ааааааааааа finedelа 46

ааааааааааа SetTxRSааааааааа 0ааааааааааааааааааааа

ааааааааааа finedelа 47

ааааааааааа SetTxRSааааааааа 1ааааааааааааааааааааа

ааааааааааа finedelа 47

ааааааааааа SetTxRSааааааааа 2ааааааааааааааааааааа

ааааааааааа finedelа 47

ааааааааааа SetTxRSааааааааа 3ааааааааааааааааааааа

ааааааааааа finedelа 47

ааааааааааа SetTxRSааааааааа 4ааааааааааааааааааааа

ааааааааааа finedelа 47

ааааааааааа SetTxRSааааааааа 5ааааааааааааааааааааа

ааааааааааа finedelа 47

ааааааааааа SetTxRSааааааааа 6

ааааааааааа finedelа 47

ааааааааааа SetTxRSааааааааа 7

ааааааааааа finedelа 52

ааааааааааа bsfаааааа PortRS,TxRS

ааааааааааа finedel 52

ааааааааааа return

 

;Additional procedures for high speed transmission

SendRS57:

; We get there 5us after the HL transition of start bit

; first check if the baudrate is 57600

ааааааааааа btfssаааа br57

ааааааааааа gotoаааа SendRS38 ; if not, try 38400

ааааааааааа btfscаааа BufRS,0

ааааааааааа incfаааааа UserCnt,F

ааааааааааа nop

ааааааааааа nop

ааааааааааа nop

ааааааааааа nop

ааааааааааа nop

ааааааааааа nop

ааааааааааа btfscаааа BufRS,0

ааааааааааа bsfаааааа PortRS,TxRS

; bit 0 17 us

ааааааааааа btfscаааа BufRS,1

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 11

ааааааааааа SetTxRSааааааааа 1

; bit 1 35 usаааааааааааааааа

ааааааааааа btfscаааа BufRS,2

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 10

ааааааааааа SetTxRSааааааааа 2ааааааааааааааааааааа

; bit 2 52 us

ааааааааааа btfscаааа BufRS,3

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 10

ааааааааааа SetTxRSааааааааа 3

; bit 3 69 us

ааааааааааа btfscаааа BufRS,4

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 11

ааааааааааа SetTxRSааааааааа 4ааааааааааааааааааааа

; bit 4 87 us

ааааааааааа btfscаааа BufRS,5

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 10

ааааааааааа SetTxRSааааааааа 5ааааааааааааааааааааа

; bit 5 104 us

ааааааааааа btfscаааа BufRS,6

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 11

ааааааааааа SetTxRSааааааааа 6

; bit 6 122 us

ааааааааааа btfscаааа BufRS,7

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 10

ааааааааааа SetTxRSааааааааа 7

; bit 7 139 us

ааааааааааа finedelа 12

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа UserCnt,0

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа movwfа PortRS

; parity bit 156 us

ааааааааааа finedel 17

ааааааааааа bsfаааааа PortRS,TxRS

; stop bit 174 us

ааааааааааа finedel 17

ааааааааааа return

 

SendRS38:

; We get there 8us after the HL transition of start bit

ааааааааааа btfscаааа BufRS,0

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 14

ааааааааааа btfscаааа BufRS,0

ааааааааааа bsfаааааа PortRS,TxRS

; bit 0 26 us

ааааааааааа btfscаааа BufRS,1

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 19

ааааааааааа SetTxRSааааааааа 1

; bit 1 52 usаааааааааааааааа

ааааааааааа btfscаааа BufRS,2

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 19

ааааааааааа SetTxRSааааааааа 2ааааааааааааааааааааа

; bit 2 78 us

ааааааааааа btfscаааа BufRS,3

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 19

ааааааааааа SetTxRSааааааааа 3

; bit 3 104 us

ааааааааааа btfscаааа BufRS,4

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 19

ааааааааааа SetTxRSааааааааа 4ааааааааааааааааааааа

; bit 4 130 us

ааааааааааа btfscаааа BufRS,5

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 19

ааааааааааа SetTxRSааааааааа 5ааааааааааааааааааааа

; bit 5 156 us

ааааааааааа btfscаааа BufRS,6

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 19

ааааааааааа SetTxRSааааааааа 6

; bit 6 182 us

ааааааааааа btfscаааа BufRS,7

ааааааааааа incfаааааа UserCnt,F

ааааааааааа finedelа 19

ааааааааааа SetTxRSааааааааа 7

; bit 7 208 us

ааааааааааа finedelа 21

ааааааааааа movfааа PortRS,W

ааааааааааа andlwаа 0xff-(1 << TxRS)

ааааааааааа btfscаааа UserCnt,0

ааааааааааа iorlwааа 1 << TxRS

ааааааааааа movwfа PortRS

; parity bit 234 us

ааааааааааа finedel 25

ааааааааааа bsfаааааа PortRS,TxRS

; stop bit 260 us

ааааааааааа finedel 25

ааааааааааа return

ааааааааааа

ааааааааааа

;The procedure for receiving of byte from RS with 19200 baud

;The auxiliary macro - sampling of RxRS and setting of the bit

SampRxRS macroа n_of_bit

ааааааааааа clrfаааааа BufRx

ааааааааааа btfscаааа PortRS,RxRS

ааааааааааа incfаааааа BufRx,F

ааааааааааа btfscаааа PortRS,RxRS

ааааааааааа incfаааааа BufRx,F

ааааааааааа btfscаааа PortRS,RxRS

ааааааааааа incfаааааа BufRx,F

ааааааааааа btfscаааа BufRx,1

ааааааааааа bsfаааааа BufRS,n_of_bit

ааааааааааа endm

 

RecvRS19:

RS19_l1:

ааааааааааа btfscаааа PortRS,RxRS

ааааааааааа gotoаааа RS19_l1

ааааааааааа btfscаааа PortRS,RxRS

ааааааааааа gotoаааа RS19_l1

ааааааааааа clrfаааааа BufRS

;delay

ааааааааааа finedelа 70

ааааааааааа SampRxRS 0

ааааааааааа finedel 43

ааааааааааа SampRxRS 1

ааааааааааа finedel 43

ааааааааааа SampRxRS 2

ааааааааааа finedel 43

ааааааааааа SampRxRS 3

ааааааааааа finedel 43

ааааааааааа SampRxRS 4

ааааааааааа finedel 43

ааааааааааа SampRxRS 5

ааааааааааа finedel 43

ааааааааааа SampRxRS 6

ааааааааааа finedel 43

ааааааааааа SampRxRS 7

ааааааааааа finedel 43

ааааааааааа clrfаааааа BufRx

ааааааааааа btfscаааа PortRS,RxRS

ааааааааааа incfаааааа BufRx,F

ааааааааааа btfscаааа PortRS,RxRS

ааааааааааа incfаааааа BufRx,F

ааааааааааа btfscаааа PortRS,RxRS

ааааааааааа incfаааааа BufRx,F

ааааааааааа btfscаааа BufRx,1

ааааааааааа retlwааа 0

ааааааааааа retlwааа 0xff

 

аааа END

 

 

╧хЁхщЄш: /├ыртэр / CBuild/ JavaScript 1.2-5.6/ Delifi6/ I2C ъюэЄЁюыыхЁ√/ AVR ъюэЄЁюыыхЁ√/ ╧╦╚╤/ AHDL/ VHDL/
LPT EPP/ LPT ECP/ PCI/ COM port/ I2C/ RS-232/
╨хщЄшэу@Mail.ru Rambler's Top100 Rambler's Top100 Rambler's Top100    
Используются технологии uCoz