ASDA-A3 MODBUS Communication
Revision December, 2017
9-13
9
CRC program example:
This function calculates the CRC value in the C language. It needs two parameters:
unsigned char
* data;
unsigned char
length
// The function returns the CRC value as a type of unsigned integer.
unsigned int
crc_chk(unsigned char* data, unsigned char length) {
int
j;
unsigned int
reg_crc=0xFFFF;
while
( length-- ) {
reg_crc^= *data++;
for
(j=0; j<8; j++ ) {
if
( reg_crc & 0x01 ) { /*LSB(bit 0 ) = 1 */
reg_crc = (reg_crc >> 1)^0xA001;
} else {
reg_crc = (reg_crc >> 1);
}
}
}
return
reg_crc;
}
Example of a PC communication program:
#include
<stdio.h>
#include
<dos.h>
#include
<conio.h>
#include
<process.h>
#define
PORT 0x03F8
/* the address of COM 1 */
#define
THR 0x0000
#define
RDR 0x0000
#define
BRDL 0x0000
#define
IER 0x0001
#define
BRDH 0x0001
#define
LCR 0x0003
#define
MCR 0x0004
#define
LSR 0x0005
#define
MSR 0x0006
unsigned char
rdat[60];
/* read 2 data from address 0200H of ASD with address 1 */
unsigned char
tdat[60]={‘:’,’0’,’1’,’0’,’3’,’0’,’2’,’0’,’0’,’0’,’0’,’0’,’2’,’F’,’8’,’\r’,’\n’};
void main
() {
int
I;
outportb
(PORT+MCR,0x08);
/* interrupt enable */
outportb
(PORT+IER,0x01);
/* interrupt as data in */
outportb
(PORT+LCR,( inportb(PORT+LCR) | 0x80 ) );
/* the BRDL/BRDH can be access as LCR.b7 == 1 */
outportb
(PORT+BRDL,12);
Summary of Contents for ASD-A3-0121
Page 13: ...Revision December 2017 This page is intentionally left blank...
Page 43: ...Installation ASDA A3 2 20 Revision December 2017 2 This page is intentionally left blank...
Page 105: ...Wiring ASDA A3 3 62 Revision December 2017 3 This page is intentionally left blank...
Page 187: ...Operation Mode ASDA A3 6 36 Revision December 2017 6 This page is intentionally left blank...
Page 467: ...Parameters ASDA A3 8 210 Revision December 2017 8 This page is intentionally left blank...
Page 577: ...Specifications ASDA A3 A 28 Revision December 2017 A This page is intentionally left blank...
Page 597: ...Accessories ASDA A3 B 20 Revision December 2017 B This page is intentionally left blank...
Page 603: ...4 Revision December 2017 This page is intentionally left blank...