Delta ASDA-A3 Series User Manual page 618

Hide thumbs Also See for ASDA-A3 Series:
Table of Contents

Advertisement

ASDA-A3
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++ ) {
}
}
return reg_crc;
}
Example of a PC communication program:
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<process.h>
#define PORT 0x03F8
#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);
outportb(PORT+IER,0x01);
outportb(PORT+LCR,( inportb(PORT+LCR) | 0x80 ) );
/* the BRDL/BRDH can be access as LCR.b7 == 1 */
outportb(PORT+BRDL,12);
if( reg_crc & 0x01 ) {
reg_crc = (reg_crc >> 1)^0xA001;
} else {
reg_crc = (reg_crc>>1);
}
/* the address of COM 1 */
/* interrupt enable */
/*LSB(bit 0 ) = 1 */
/* interrupt as data in */
MODBUS Communication
9
9-13

Advertisement

Table of Contents
loading

This manual is also suitable for:

Ecm-a3 series

Table of Contents