background image

电机走拍子程序 :控制电机的实时运转,根据方向按拍表的内容走步,由既定的步数走到相应的楼层,

根据请求表,做相关的处理。

重量检测子程序:通过对 ADC0809 的模拟量检测,滤波(采集 8 次求平均值)判断是否超重(模拟量

的大于 4.5V),如超重,则进行相应的错误处理(该子程序不在主流程中,在关门按键按下时调用一次)

关于方案改进:

实时系统中尽量少软件延时,本系统中键处理中防抖动,步进电机拍与拍之间间隔都用了软件延时,用

此方法因为系统实时性并不高,只有控制台键盘输入,但软件延时会影响显示,所以延时的地方用调用显示
来完成,这样延时的精度会受影响,改进的方法就是用定时中断,可使用 8253,8259 来完成,特别是步进
电机的走步程序,如按此方案,走步程序就在中断服务程序里完成,同时可根据步进电机的特性,走出升降
曲线,使电机控制在更佳状态。

3、源程序代码

DATA

SEGMENT

;数据段

KCROW DB 0

;

 

键盘扫描 行设置

KEYID

DB 0

;键值

DRSTAT DB 0FFH

;电机开关门状态(0 表示开门,0FFH 表示关门,1 表示走拍)

ALARM DB 0

;电机故障指示 (0 无故障,0FFH 有故障)

FLOOR

DW 1

;电机当前运行的楼层

DIRECT DB 0

;电机运行方向 (0 表示正走,0FFH 表示反走)

STEP

DB 0

;电机在走拍程序中 4 拍的位置

STPNUM DW 0

;电机走拍次数

STPTAB DB 08H,04H,02H,01H ;拍表
FLRQ

DB 8 DUP(0);楼层请求 (0 无请求,1 有请求)

DCACHE DB 4 DUP(0FH);显示缓存

(4 个字节)

;LED 段码表
LCODE

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;[0123456789]

000H~009H

DB 79H,50H,73H,37H,5CH,00H

;[ErPNo ] 00AH~00FH

;8255(1)端口定义 A

 

键盘输入 B

 

片选输出 C 屏幕输出

PA1

EQU 208H

PB1

EQU 209H

PC1

EQU 20AH

P1CTL

EQU 20BH

;8255(2)端口定义 A

 

电机输出 B LED

 

输出

PA2

EQU 218H

PB2

EQU 219H

PC2

EQU 21AH

P2CTL

EQU 21BH

;CSAD 端口定义
CSAD

EQU 202H;???

TRHLD

EQU 0E6H;0.0V=00H 5.0V=FFH

FLSTPN EQU 0C70H
;有效键值表
KID_FL1 EQU 000H

;一楼

KID_FL2 EQU 001H

; |

KID_FL3 EQU 002H

; |

KID_FL4 EQU 003H

; |

KID_FL5 EQU 004H

; |

KID_FL6 EQU 005H

; |