;*******************************************************************
;аааааааааааааааааааааааааа
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/
Используются технологии uCoz
|