登录
|
注册会员
开启辅助访问
设为首页
收藏本站
扫一扫关注官方微信
论坛
BBS
M币充值
M currency prepaid phone
M币获取
附件中心
搜索
search
全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
MCU资讯论坛
»
论坛
›
单片机论坛
›
51单片机论坛
›
科威PLC芯片组开发实例(九)
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版
科威PLC芯片组开发实例(九)
[复制链接]
1719
0
ad***
管理员
发表于 2012-9-3 02:23:33
|
查看全部
|
阅读模式
本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要
登录
才可以下载或查看,没有帐号?
注册会员
x
实战攻坚!
上面一讲我们讲述了该如何对照原理图的引脚分配情况来配置你的INIT_CONFIG子程序,这一讲笔者说说其他3个初始化应该如何编写。
我们先在USER_DATA中定义几个用户变量:
INPUT_PORTA EQU DRAM_USER
INPUT_CNT EQU DRAM_USER+1
XINPUT EQU XRAM_USER
在解释这些变量的含义之前,我们首先聊下PLC的工作状态。
PLC的输入端口是和梯形图中的X端口相对应的,也就是说,短接I0和COM0(输入端口统一地端子),梯形图中的X0将会吸合,反应在元件监控画面上X0右边会出现绿色的实心小正方形,表示它的触点已被吸合。同理,I0~I7对应的便是X0~X7。
而PLC的输出端口是和梯形图中的Y端口相对应的,当用户在梯形图中把Y0置1或是元件监控里把Y0强制置1,那么O0端子便和COM1自动短接了。同理,O0~O5对应的便是Y0~Y5。在PLC端子口上是看不到I0和O0的,但是有它们对应的X0和Y0。
下面我们讲讲这几个用户变量:
INPUT_PORTA:用来保存当前8个输入端口的输入状态(X0~X7)的。
INPUT_CNT:输入端子采样次数指针。
XINPUT:输入端子采样值缓冲区。
这些概念朋友们先大概了解一下便好,至于怎么应用到它们,后面还会具体讲到。
INIT_START
接下来,我们开始编写INIT_START用户驱动子程序了,添加的代码如下:
MOV INPUT_CNT,#08H ;1
CLR A ;2
MOV DPTR,#RAM_PX+1 ;3
MOVX @DPTR,A ;4
MOV DPTR,#RAM_PY+1 ;5
MOVX @DPTR,A ;6
1. 我们将INPUT_CNT这个变量初始化为8,这也就意味着,采样的次数我们限定它为8次,如果你设置成4,那么输入端口的采样次数就为4,现在只要知道这些就好,我们以后在讲到TMS这个用户驱动子程序时,会详细给大家分析为什么采样输入端口以及如何采样它。
2. 不用讲了吧…
3. 这个是将间接寻址指针指向X0~X7所在的地址单元,间接寻址指针的表达方式有2种,笔者惯用的是以DPTR形式来进行寻址。至于另外一种,呵呵,自己查说明书吧。
4. 这句话的意思是把寄存器A的值赋给X0~X7,因为A的值为0,实际上这句话的作用就是把X0~X7所代表的寄存器的值清零。看到这里,可能有的朋友就又有问题了,为什么X0~X7所在的地址不是#RAM_PX而是#RAM_PX+1呢,其实这个是和内核定义梯形图单元的寻址地址有关。内核规定,梯形图的单元寄存器都是低位在后,高位在前,也就是说,#RAM_PX并不是对应的X0~X7,而是X10~X17。
5. 这个是将间接寻址指针指向Y0~Y7所在的地址单元。
6. 同4。
INIT_RUN
直接让它返回吧,在这个系统里面,没必要配置这个。
INIT_SET
然后紧接着配置INIT_SET:
CLR A
MOV DPTR,#RAM_PX+1
MOVX @DPTR,A
MOV DPTR,#RAM_PY+1
MOVX @DPTR,A
这里也是清除X0~X7和Y0~Y7的寄存器值,那为什么在这里又要清零呢?会不会跟之前的重复了呢?
当然不会,注意到系统会在什么时候调用INIT_SET呢?是在内核重新上电后进入梯型图下载状态或内核从梯型图运型状态进入梯型图下载状态时调用此程序一次。
看到了吧,PLC在不断电的情况下,也会在上面黑体的部分调用到它,举个例子,PLC在运行过程当中,Y3处于闭合状态,现在你要重新灌梯形图了,这个时候你当然希望Y3不再闭合了,而是等你重新下载梯形图完毕以后,系统重新判断Y3到底该不该为1。由于这个时候PLC并不断电,那么调用INIT_START也就无从谈起,也就无法调用那里面的清零语句。所以你必须要在INIT_SET把它两给的值清除了,才能保证PLC的正常工作。
STEP
也是空的,没必要配置~
下一讲里,我们讲TMS用户驱动子程序,也就是用户2.5ms中断了,这个可是个重点哦~^-^~!
本帖首发中国工控网科威PLC
论坛
,转载请声明!
其他
,
子程序
,
如何
,
用户
相关帖子
急需单片机编程
【干货分享】如何建立原理图库和PCB库手法
本人工作10年总结文档——《教你如何找到导致程序跑飞的指令》
.DSN格式的原理图如何生成PADS95格式的网络?
求助安装USB-JTAG软件在JZ2440开发板ARM9系统上
如何用单片机I/O口,驱动24V继电器??
求教各位:我在使用ALTIUM16.1.11时,移动已经画好的元件,导线也一起移动,没法断开
旋转led灯
stm初学如何新手入手
4412嵌入式开发平台Android系统开发环境搭建以及编译
举报
回复
返回列表
*
滑块验证:
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册会员
本版积分规则
发表回复
回帖后跳转到最后一页
回复
转播
评分
分享
打开支付宝扫一扫,最高立得1212元红包
搜索
本版
帖子
用户
热搜:
传感器
51串口程序
电子管放大器
夾式電表
夾式電流
Mentor论坛
打印机
版块推荐
百宝箱
My 布拉格
无边框Z9
Z9Max
Z9mini
nubia动态
问题 & 建议
资源分享
爱拍
同城会
牛仔生活
查看论坛所有版块>>
每日签到
论坛任务
摄影技巧
跳蚤市场
互助问答
论坛导读
申请内测
红包中心
每日摇一摇
活动中心
网站地图
官方旗舰店
图文热点
抗干扰LED数码管显示屏驱动芯片/3线串行接
VK1Q68D是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片。内部集成有3线
抗干扰能力强/点阵数显LED屏驱动/数码管驱
VK1S68C是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3 线串
可支持14×4的点阵LED显示面板数码管LED驱
VK1624是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、数据锁 存
数显驱动器原厂-数显LED显示驱动芯片VK1620
VK1620B是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、 数据锁
抗干扰数显驱动数码管LED驱动芯片VK1618 SO
产品品牌:永嘉微电/VINKA 产品型号:VK1618 封装形式:SOP18/DIP18 概述 VK161
更多
精华推荐
抗干扰LED数码管显示屏驱动芯片/3线串行接
抗干扰能力强/点阵数显LED屏驱动/数码管驱
可支持14×4的点阵LED显示面板数码管LED驱
数显驱动器原厂-数显LED显示驱动芯片VK1620
抗干扰数显驱动数码管LED驱动芯片VK1618 SO
VK1616 SOP16/DIP16点阵LED数显驱动芯片/数
点阵数显驱动芯片/LED数码管显示屏驱动VK16
数显驱动电路LED显示驱动芯片VK1650 SOP16/
更多
社区学堂
抗干扰LED数码管显示屏驱动芯片/3线串
抗干扰能力强/点阵数显LED屏驱动/数码
抗干扰LED数码管显示屏驱动芯片/3线串行接
VK1Q68D是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片。内部集成有3线
抗干扰能力强/点阵数显LED屏驱动/数码管驱
VK1S68C是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3 线串
可支持14×4的点阵LED显示面板数码管LED驱
VK1624是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、数据锁 存
更多
客服中心
QQ:187196467
服务时间:周一至周日 8:30-20:30
在线客服
客服微博
产品咨询
售后中心
关注我们
关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
QQ:187196467
周一到周日 8:30-22:00 (全年无休)
7 x 24小时在线客服
手机版
Powered by
MCUZX!
X3.4 © 2008-2015
MCU资讯论坛
版权所有
京ICP备18035221号-2
客服QQ: 187196467
技术支持:
MCU资讯论坛
|
网站地图
快速回复
返回顶部
返回列表