;D2--D0=GAIN
;000 GAIN=1
MOV ADC0CN, #90H ;启动AD采样
MOV AD_CHANNEL, #00H ;AD通道号,初值为0
MOV AD_COUNT, #00H ;16次采样次数计数。初值为0
RET
SAMPLE_AD:         ;AD采样开始
 MOV  SFRPAGE, #ADC0_PAGE ;AD控制寄存器页     MOV  A,  AD_CHANNEL  ;采样值的累加和是一个字基地址         ;为#XAI,偏移地址为AD_CHANNEL
   RL  A
  
   MOV  DPTR,  #XAI  ;XAI存放16次采样值的累加和
   ADD  A,   DPL   ;低字节相加
   MOV  DPL,  A
   MOVX A,   @DPTR
   MOV  B,   A
   MOV  A,   ADC0L
   CLR  C
   ADDC A,   B
   MOVX @DPTR,  A
   INC  DPTR     ;高字节相加
   MOVX A,   @DPTR
   MOV  B,   A
   MOV  A,   ADC0H
   ANL  A,   #0FH
   ADDC A,   B
   MOVX @DPTR,  A   ;#XAI中存放格式为低字节、高字节
   MOV  SFRPAGE, #ADC0_PAGE ;AD控制寄存器页
   MOV  ADC0CN, #090H  ;启动下次AD采样 
   
   INC  AD_COUNT
   MOV  A,   AD_COUNT
   CLR  C
   SUBB A,   #16  
   JNC  FILL_XAI_XAD   ;当16次采样完成后,把XAI中16          ;个采样和(2字节)存放到XAD
RET
驱动程序的嵌入
 在KEIL C51中编译上述程序。使用下载工具软件“DOWNHEX”,把生成的.HEX文件通过串口下载到芯片组的固定地址处,使得内核可以调用它,从而完成二次驱动程序的开发。到此,16路模拟量PLC的开发工作基本完成。
三、功能介绍
 基于嵌入式PLC开发的多路模拟量网络节点具有以下功能:1、采集工业现场的多路热电偶信号,2、支持三菱、台达等多家人机界面, 3、支持梯形图编程(86条指令), 4、支持CANbus互连(多机并联运行或扩展单元连接)等。这里简要介绍下该网络节点的梯形图功能应用。
 嵌入式PLC的系统软件中内置了温度转换函数,其功能是把热电偶毫伏信号对应的AD值转化成温度值。适用于任意分度热电偶输入信号,应用于不同的控温场合,配合PID调节,使受控温度精度可达±1℃。
 下面的梯形图程序就是把一路热电偶信号转换成温度值,该信号AD值放在D5000,转换后的温度值存放在D5160中。
 
结束语
 笔者利用嵌入式PLC芯片组开发的的PLC产品的实例证明,本着软硬件可裁剪的原则,开发出的产品可以很好的满足用户的个性化需求,节约了硬件成本、缩短了研发周期,并且得到了许多强大的功能,相信它的出现必将使得PLC生产厂家生产出越来越多的贴近终端市场的PLC。
参考文献:
1. 黄石科威自控有限公司 《嵌入式PLC原理与应用》
2. 沈阳新华龙有限公司  《C8051F040数据手册》
3. 黄石科威自控有限公司 《EASY编程手册》
4.《KEIL C51开发环境使用手册》

