5.2.8 8155定时功能
8155芯片内有一个14位减法计数器,可对输入脉冲进行减法计数。外部有两个定时器引脚TINEIN 和TIMEOUT。TINEIN为定时器时钟输入,有外部输入时钟脉冲,TIMEOUT为定时器输出,输出各种信号脉冲波形。定时器的格式、输出波形见图8-5。
由上图可见,定时器的低8位和高6位计数器定时是出方式由04H、05H寄存器确定。对定时器编程时,首先将计数器及定时器方式送入定时器口,(定时器的低8位和高6位,定时器方式M)04H,05H。计数常数在002H~3FFF之间。计数器的起动和停止由命令寄存器的最高两位TM2和TM1决定。但何时读都可以置定时器的长度和工作方式,然后必须将起动命令写入命令寄存器。既使计数器已经计数,在写入起动命令后,仍可改变定时器的工作方式。
× A口中断标志请求 A口缓冲器满空标志 A口中断允许标志 B口中断标志请求 B口缓冲器满空标志 B口中断允许标志 定时器中断标志,定时器计数到 指定长度置“1”,读状态后清“0”
图5-4 状态寄存器格式
M2 M1 0 0 0 1 1 0 1 1 方 式 单方波 连续方波 单脉冲 连续脉冲 定时器输出波形 图5-5 8155定时器方式及输出波形
5.2.9 芯片地址分配
89C51支持的存储芯片,程序存储器与数据存储器单独编址,EPROM与RAM地址分配较为自由,不必考虑会发生冲突,因89C51复位后,从0000H开始,内部程序存储器空间为0000H-0FFFH,外部2片2764芯片地址分别为0C000H-0DFFFH,8000H--9FFFH。89C51内部数据存储器空间为00H-0FFH,外部6264芯片地址:6000H-7FFFH 1#8155芯片地址(假定未用地址用\表示)
M/IO=0时,8155(1)内部RAM地址范围 E000H-E0FFH
M/IO=1时,端口地址:控制口:E100H;PA口:E101H;PB口:E102H;PC口:E103H;
定时器低八位:E104H;定时器高八位:E105H 2#8155芯片地址(假定未用地址用\表示)
M/IO=0时,8155(1)内部RAM地址范围 0A000H-0A0FFH
M/IO=1时,端口地址:控制口:0A00H;PA口:0A01H;PB口:0A02H;PC口:
0A03H;
定时器低八位:0A04H;定时器高八位:0A05H
5.3 总体程序控制
5.3.1流程图
5.3.2主程序
ORG 0000H
AJMP MAIN
ORG 0003H LJMP INT0 ORG 000BH LJMP T0 ORG 0013H LJMP INT1
MAIN: MOV A,#00H
MOV R0,#00H
MOV DPTR,#2000H
XUNHUAN : MOVX @DPTR, A
INC DPTR INC R0
CJNE R0,#0FFH, XUNHUAN INC R1
CJNE R2,#0FFH, XUNHUAN MOV SP,#60H SETB PX0 SETB EX0 SETB EX1
SETB EA WE : AJMP WE GONGZUO:
LCALL QIUJIAN LCALL XIANSHI LCALL CHULI
5.4 键盘设计
5.4.1键盘定义及功能
控制面板上布置5个控制键,33个功能数字键。其中8个键有双重功能,由SHIFT键转换,按下SHIFT键,上档键有效。 5个控制键各功能如下:
急停键——运行时按该键,程序立即停止运行。
暂停键——运行时按下该键,执行完本程序段后,停止执行下一程序段,等待处理,此为硬件暂停。
恢复运行键——处于急停或暂停时,接下该键程序继续执行。用M00实行软件暂停时,恢复运行也需要按该键。
复位键——编程或运行前,清除内存中的随机数。 对中心键——钼丝自动找准预定的中心位置(原点)。
30个功能数字键包括数字键“0-9”,负号“—”,程序开始字“%”,程序段结束字“LF”,序号字“N”,准备功能字“G”,辅助功能字“M”,速度功能字“F”,主轴速度功能字“S”,坐标功能字“X、Y、Z、I、J、W”。编辑键三个:DEL/INS—删除/插入程序段键,DISP/ZOOM—DISP显示程序全段内容,ZOOM使加工图形按比例缩放,预置为1,COPY—程序段复制,IDX—可设定某一程序段为起割点,单步—步进电机走一拍就停止工作,回零—钼丝重新置于起点,运行—加工开始确认。 5.4.2 键盘程序设计
本设计采用非编码式矩阵式键盘,1#8155为键盘接口,按五行六列布线。PA0—PA4为行线,PC0—PC5为列线。 A口为输出口,C口为输入口,按键盘列线,每个键对应一个键码,根据键码转至相应键处理子程序。常用键识别方法有扫描法和线翻转法。本设计采用扫描法。其原理是:一条列线为低电平,若此列线上已闭合键,则各行线状态都为高电平,然后按行号、列号求得闭合键键码。
定义各行首键号为00H、06H、0CH、12H、18H,键码=行号+列号。键号键功能对应表8-1
表8-1 键号键功能对应 键号 00H-09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 11H 12H 1E
功能 0-9 14H — 15H %LF N 17H DISPZOOMG 18H IDX M 19H 穿孔 纸带F 1AH S 1BH ?X ?Y ?Z 键号 13H 功能
16H 1CH 1DH 1F ?W?I ?J DEL COPY 单步 回零 运行 SHIFT 图5-6 键盘扫描程序流程图
图5-7 求键值子程序
键盘扫描子程序
ORG 0500H SCAN:MOV A,#00H MOV DPTR, #E101H MOVX @DPTR, A MOV A #3FH MOV DDPTR, #E103H
求键值子程序
MOVX #DPTR, A MOV DPTR, #E102H MOVX A, @DPTR ANL A, #1FH
CJNE3 A, #1FH, NEXT1 SJMP NEXT4
NEXT1: ACALL DS20ms CLR C MOV R2, #00H MOV R1, #01H LOOP: INC DPTR MOV A,R1 MOVX #DPTR, A MOV DPTR, #8002H MOVX A, @DPTR ANL A, #1FH CJNE A, #1FH, NEXT2 SJMP NEXT3 NEXT2: INC R2 CJNE R2, #01H, NEXT4 MOV R4, A MOV A,R1 MOV R3,A NEXT3: MOV A,R1 RLC A MOV R1,A
CJNE A,#40H, LOOP AJMP KCODE NEXT4:CLR A RET END
ORG 0560H
KCODE:MOV R1,#00H MOV A, R3 CLR C