发表于:2008/8/2 9:39:00
#0楼
这一讲里面将会讲解科威PLC芯片组开发用户驱动的具体格式。笔者始终认为,学编程,从看代码开始是捷径!所以,我们在PCLDR.ASM内添加以下一段代码。
$INCLUDE(C8051F040.INC) ; Register definition file. -------------------1
$INCLUDE(easycore.INC) ; easycore 符号定义------------------------2
$INCLUDE(EASYCORE.LIB) ; easycore 子程序---------------------------3
$INCLUDE(user_data.INC) ; 用户程序变量定义------------------------4
;================中断向量重定向地址=======================
ORG 0E000H
ORG 0E003H ;external interrupt0 vecter (INT0)------5
ORG 0E013H ;external interrupt1(INT1)---------------6
ORG 0E033H ;Serial Peripheral Interface(SPI)--------7
ORG 0E03BH ;SMBus interface-------------------------8
ORG 0E043H ;ADC0 Window Comparator;----------9
ORG 0E04BH ;Programmable Counter Array--------10
ORG 0E053H ;Comparator 0---------------------------11
ORG 0E05BH ;Comparator 1---------------------------12
ORG 0E063H ;Comparator 2 --------------------------13
ORG 0E07BH ;ADC0 end of Conversion-------------14
ORG 0E083H ;Timer 4-------------------------------15
ORG 0E08BH ;ADC2 end of Conversion-------------16
ORG 0E093H ;ADC2 Window Comparator-----------17
;===============用户应用程序调用入口====================
ORG 0E0A0H ;用户端口初始化
LJMP INIT_CONFIG ;----------------------- --------------------18
ORG 0E0A3H ;用户上电初始化
LJMP INIT_START ;----------------------- --------------------19
ORG 0E0A6H ;用户设置初始化
LJMP INIT_SET ;----------------------- --------------------20
ORG 0E0A9H ;用户运行初始化
LJMP INIT_RUN ;----------------------- --------------------21
ORG 0E0ACH ;演算周期扫描
LJMP SCAN ;----------------------- --------------------22
ORG 0E0B0H ;指令周期扫描
LJMP STEP ;----------------------- --------------------23
ORG 0E0B3H ;2.5MS周期扫描
LJMP TMS ;----------------------- --------------------24
ORG 0E100H ;----------------------- --------------------25
INIT_CONFIG:
RET
INIT_START:
RET
INIT_SET:
RET
INIT_RUN:
RET
STEP:
RET
TMS:
RET
SCAN:
RET
END ;-------------------------------------------------------------26
然后点击编译,如无意外,KEIL将会编译成功并生成“PLCDR.HEX”文件,该文件可以在项目路径下找到。
至此,你的第一个驱动程序已经编写完成。只不过这是一个简单的驱动程序,简单到什么也没有的驱动程序。嘿嘿,如果把这段HEX代码下到你的PLC内,PLC的IO口可能会乱跳的哦~不过,梯形图的解释倒是独立于驱动之外的,加载了一个什么也没有的驱动,PLC芯片组也是可以正常运行梯形图的。
在下一讲里,笔者将会逐句给你分析以上程序的每一条语句哦~其实从那些简短的注释里,相信不少读者已经看出了些许端倪了。
本帖首发中国工控网科威PLC论坛,转载请声明!
$INCLUDE(C8051F040.INC) ; Register definition file. -------------------1
$INCLUDE(easycore.INC) ; easycore 符号定义------------------------2
$INCLUDE(EASYCORE.LIB) ; easycore 子程序---------------------------3
$INCLUDE(user_data.INC) ; 用户程序变量定义------------------------4
;================中断向量重定向地址=======================
ORG 0E000H
ORG 0E003H ;external interrupt0 vecter (INT0)------5
ORG 0E013H ;external interrupt1(INT1)---------------6
ORG 0E033H ;Serial Peripheral Interface(SPI)--------7
ORG 0E03BH ;SMBus interface-------------------------8
ORG 0E043H ;ADC0 Window Comparator;----------9
ORG 0E04BH ;Programmable Counter Array--------10
ORG 0E053H ;Comparator 0---------------------------11
ORG 0E05BH ;Comparator 1---------------------------12
ORG 0E063H ;Comparator 2 --------------------------13
ORG 0E07BH ;ADC0 end of Conversion-------------14
ORG 0E083H ;Timer 4-------------------------------15
ORG 0E08BH ;ADC2 end of Conversion-------------16
ORG 0E093H ;ADC2 Window Comparator-----------17
;===============用户应用程序调用入口====================
ORG 0E0A0H ;用户端口初始化
LJMP INIT_CONFIG ;----------------------- --------------------18
ORG 0E0A3H ;用户上电初始化
LJMP INIT_START ;----------------------- --------------------19
ORG 0E0A6H ;用户设置初始化
LJMP INIT_SET ;----------------------- --------------------20
ORG 0E0A9H ;用户运行初始化
LJMP INIT_RUN ;----------------------- --------------------21
ORG 0E0ACH ;演算周期扫描
LJMP SCAN ;----------------------- --------------------22
ORG 0E0B0H ;指令周期扫描
LJMP STEP ;----------------------- --------------------23
ORG 0E0B3H ;2.5MS周期扫描
LJMP TMS ;----------------------- --------------------24
ORG 0E100H ;----------------------- --------------------25
INIT_CONFIG:
RET
INIT_START:
RET
INIT_SET:
RET
INIT_RUN:
RET
STEP:
RET
TMS:
RET
SCAN:
RET
END ;-------------------------------------------------------------26
然后点击编译,如无意外,KEIL将会编译成功并生成“PLCDR.HEX”文件,该文件可以在项目路径下找到。
至此,你的第一个驱动程序已经编写完成。只不过这是一个简单的驱动程序,简单到什么也没有的驱动程序。嘿嘿,如果把这段HEX代码下到你的PLC内,PLC的IO口可能会乱跳的哦~不过,梯形图的解释倒是独立于驱动之外的,加载了一个什么也没有的驱动,PLC芯片组也是可以正常运行梯形图的。
在下一讲里,笔者将会逐句给你分析以上程序的每一条语句哦~其实从那些简短的注释里,相信不少读者已经看出了些许端倪了。
本帖首发中国工控网科威PLC论坛,转载请声明!
诚实守信,携手奋进。