Mitch,
What is the name on the top of the dryer? How much electricity goes through it? If you can send me any of these things I’d appreciate it. Have you got the money yet? Hope so,
Ken |
From:
"Charles Douvier" <> Date: Fri May 16, 2003 5:53 pm Subject: [piclist] microchip's USART code.. To: "Piclist" <> |
Microchip has a couple 18Fxxx usart code samples .. the one I chose for my project was p18_tprp.asm. I chose polling because I'll pretty much know when to expect to send or when I am going to be receiving information.. I can't tell if the information will be sent correctly if I dump what I want to send in POSTINC1 and increment the TxByteCount. I don't know how POSTINC1 works.. since its not "really" a SFR per say its just mapped into the SFR .. I assume I could just drop byte by byte into TXREG, but I like their code and how they did it and I might want to use the TxBuffer so I could dump some bytes into it quickly. Can I "cheat" and just movwf my byte into POSTINC1 for now? I'll probably use their whole TxBuffer later on in project development, but for now I just have one byte to send.. The code for transmitting data is: TransmitSerial: movf TxByteCount,F ;check if data to be transmitted btfsc STATUS,Z return ;return if no data to be transmitted btfss PIR1,TXIF ;check if transmitter busy return ;return if transmitter busy movff POSTINC1,TXREG ;get the data and transmit decf TxByteCount,F ;decrement number of bytes left return they use this code.. to copy the RxBuffer to the TxBuffer I am not using this code but this is why they are using POSTINC0, and POSTINC1 in the first place I guess. ;--- - ;Copy data from receive buffer to transmit buffer to echo the line back. ;CopyRxToTx: tstfsz TxByteCount ;check if TX buffer still has data ; bra ErrTxBufOver ;error if previous TX is still busy ; movff RxByteCount,TxByteCount ;copy number of bytes ; lfsr 1,TxBuffer ;load start address of TX buffer ; lfsr 0,RxBuffer ;load start address of RX buffer ;CopyRxTx1: ; movff POSTINC0,POSTINC1 ;copy from RX buffer to TX buffer ; decfsz RxByteCount,F ;decrement counter and see if all done ; bra CopyRxTx1 ;repeat if not done ; ; lfsr 1,TxBuffer ;load start address of TX buffer ; lfsr 0,RxBuffer ;load start address of RX buffer ; bcf Flags,ReceivedCR ;clear indicator for <CR> received ; return to unsubscribe, go to http://www.yahoogroups.com and follow the instructions ">Yahoo! Terms of Service. |
Re: microchip's USART code..
Started by ●January 18, 2003
Reply by ●January 18, 20032003-01-18
Please disregard last message
Ken
|
From:
"Charles Douvier" <> Date: Fri May 16, 2003 5:53 pm Subject: [piclist] microchip's USART code.. To: "Piclist" <> |
Microchip has a couple 18Fxxx usart code samples .. the one I chose for my project was p18_tprp.asm. I chose polling because I'll pretty much know when to expect to send or when I am going to be receiving information.. I can't tell if the information will be sent correctly if I dump what I want to send in POSTINC1 and increment the TxByteCount. I don't know how POSTINC1 works.. since its not "really" a SFR per say its just mapped into the SFR .. I assume I could just drop byte by byte into TXREG, but I like their code and how they did it and I might want to use the TxBuffer so I could dump some bytes into it quickly. Can I "cheat" and just movwf my byte into POSTINC1 for now? I'll probably use their whole TxBuffer later on in project development, but for now I just have one byte to send.. The code for transmitting data is: TransmitSerial: movf TxByteCount,F ;check if data to be transmitted btfsc STATUS,Z return ;return if no data to be transmitted btfss PIR1,TXIF ;check if transmitter busy return ;return if transmitter busy movff POSTINC1,TXREG ;get the data and transmit decf TxByteCount,F ;decrement number of bytes left return they use this code.. to copy the RxBuffer to the TxBuffer I am not using this code but this is why they are using POSTINC0, and POSTINC1 in the first place I guess. ;--- - ;Copy data from receive buffer to transmit buffer to echo the line back. ;CopyRxToTx: tstfsz TxByteCount ;check if TX buffer still has data ; bra ErrTxBufOver ;error if previous TX is still busy ; movff RxByteCount,TxByteCount ;copy number of bytes ; lfsr 1,TxBuffer ;load start address of TX buffer ; lfsr 0,RxBuffer ;load start address of RX buffer ;CopyRxTx1: ; movff POSTINC0,POSTINC1 ;copy from RX buffer to TX buffer ; decfsz RxByteCount,F ;decrement counter and see if all done ; bra CopyRxTx1 ;repeat if not done ; ; lfsr 1,TxBuffer ;load start address of TX buffer ; lfsr 0,RxBuffer ;load start address of RX buffer ; bcf Flags,ReceivedCR ;clear indicator for <CR> received ; return to unsubscribe, go to http://www.yahoogroups.com and follow the instructions ">Yahoo! Terms of Service. |
Reply by ●May 16, 20032003-05-16
Microchip has a couple 18Fxxx usart code samples .. the one I chose for
my project was p18_tprp.asm. I chose polling because I'll pretty much know when to expect to send or when I am going to be receiving information.. I can't tell if the information will be sent correctly if I dump what I want to send in POSTINC1 and increment the TxByteCount. I don't know how POSTINC1 works.. since its not "really" a SFR per say its just mapped into the SFR .. I assume I could just drop byte by byte into TXREG, but I like their code and how they did it and I might want to use the TxBuffer so I could dump some bytes into it quickly. Can I "cheat" and just movwf my byte into POSTINC1 for now? I'll probably use their whole TxBuffer later on in project development, but for now I just have one byte to send.. The code for transmitting data is: TransmitSerial: movf TxByteCount,F ;check if data to be transmitted btfsc STATUS,Z return ;return if no data to be transmitted btfss PIR1,TXIF ;check if transmitter busy return ;return if transmitter busy movff POSTINC1,TXREG ;get the data and transmit decf TxByteCount,F ;decrement number of bytes left return they use this code.. to copy the RxBuffer to the TxBuffer I am not using this code but this is why they are using POSTINC0, and POSTINC1 in the first place I guess. ;--- - ;Copy data from receive buffer to transmit buffer to echo the line back. ;CopyRxToTx: tstfsz TxByteCount ;check if TX buffer still has data ; bra ErrTxBufOver ;error if previous TX is still busy ; movff RxByteCount,TxByteCount ;copy number of bytes ; lfsr 1,TxBuffer ;load start address of TX buffer ; lfsr 0,RxBuffer ;load start address of RX buffer ;CopyRxTx1: ; movff POSTINC0,POSTINC1 ;copy from RX buffer to TX buffer ; decfsz RxByteCount,F ;decrement counter and see if all done ; bra CopyRxTx1 ;repeat if not done ; ; lfsr 1,TxBuffer ;load start address of TX buffer ; lfsr 0,RxBuffer ;load start address of RX buffer ; bcf Flags,ReceivedCR ;clear indicator for <CR> received ; return |
|
Reply by ●May 16, 20032003-05-16
POSTINCx and POSTDECx use the related FSRx register to access memory indirectly and then increment or decrement the FSR register. So, in older devices the programmer would load the address in FSR and access the data in INDF and then increment FSR. With POSTINCx you load FSR with the start of the data and access the data with POSTINCx which grabs the data and increments FSR in one operation. Refer to section 4.12.1 (pg 50) of the datasheet. If you had a string of characters in RAM and you wanted to send them to the serial port you could set FSRx to the beginning of the string and grab the characters via POSTINCx before putting them in TXREG. If the string in NULL terminated you could tell when to stop sending them to TXREG. --- In , "Charles Douvier" <charles@k...> wrote: > Microchip has a couple 18Fxxx usart code samples .. the one I chose for my > project was p18_tprp.asm. I chose polling because I'll pretty much know when > to expect to send or when I am going to be receiving information.. > > I can't tell if the information will be sent correctly if I dump what I want > to send in POSTINC1 and increment the TxByteCount. I don't know how POSTINC1 > works.. since its not "really" a SFR per say its just mapped into the SFR .. > I assume I could just drop byte by byte into TXREG, but I like their code > and how they did it and I might want to use the TxBuffer so I could dump > some bytes into it quickly. Can I "cheat" and just movwf my byte into > POSTINC1 for now? I'll probably use their whole TxBuffer later on in project > development, but for now I just have one byte to send.. > > The code for transmitting data is: > > TransmitSerial: movf TxByteCount,F ;check if data to be transmitted > btfsc STATUS,Z > return ;return if no data to be transmitted > btfss PIR1,TXIF ;check if transmitter busy > return ;return if transmitter busy > > movff POSTINC1,TXREG ;get the data and transmit > decf TxByteCount,F ;decrement number of bytes left > return > they use this code.. to copy the RxBuffer to the TxBuffer I am not using > this code but this is why they are using POSTINC0, and POSTINC1 in the first > place I guess. > ;------------------------------- -------- > - > ;Copy data from receive buffer to transmit buffer to echo the line back. > > ;CopyRxToTx: tstfsz TxByteCount ;check if TX buffer still has data > ; bra ErrTxBufOver ;error if previous TX is still busy > ; movff RxByteCount,TxByteCount ;copy number of bytes > ; lfsr 1,TxBuffer ;load start address of TX buffer > ; lfsr 0,RxBuffer ;load start address of RX buffer > ;CopyRxTx1: > ; movff POSTINC0,POSTINC1 ;copy from RX buffer to TX buffer > ; decfsz RxByteCount,F ;decrement counter and see if all done > ; bra CopyRxTx1 ;repeat if not done > ; > ; lfsr 1,TxBuffer ;load start address of TX buffer > ; lfsr 0,RxBuffer ;load start address of RX buffer > ; bcf Flags,ReceivedCR ;clear indicator for <CR> received > ; return |