饮料包装流水线

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

data segment

ioport equ 2400h-280h

io8255a equ ioport+288h

io8255c equ ioport+28Ah

io8255ctr equ ioport+28bh

led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

time db '0','$'

time_1 db '0','$'

time_2 db '0','$'

time_3 db '0','$'

time_4 db '0','$'

time_5 db '0','$'

time_6 db '0','$'

ten db 10

num db 0

num1 db 0

temp db 12

temp1 db '0','$'

temp2 db 0

temp3 db 0

mess db 'Press Q to EXIT',0ah,0dh,'$'

xiang db 'CASE','$'

ping db '12 BOTTLE Date:','$'

waittime db 'wait 5s packing...',0ah,0dh,'$'

time_ok db 'packing is finished!',0ah,0dh,'$'

wrong db 'marchine is broken!',0ah,0dh,'$'

right db 'machine is ok now!',0ah,0dh,'$'

run db 'machine is running...',0ah,0dh,'$'

data ends

code segment

main proc far

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov dx,offset mess ;显示提示信息

mov ah,09h

int 21h

mov dx, io8255ctr ;将8255设为A口输出,c口4-7输入0-3输出mov al,10001000b

out dx,al

mov dx,2403h ;开始对8253进行初始化

mov al,00010000b;计数器0方式0低八位二进制

out dx,al

mov dx,2400h

mov al,12

out dx,al ;设置计数初值

mov dx, io8255ctr ;c口第四位pc4置0,默认无故障mov al,00001000b

out dx,al

mov dx,offset run;显示machine is running

mov ah,09h

int 21h

ll:

mov dx,io8255c

mov al,00001000b

out dx,al

mov dx,io8255c

in al,dx

and al,00010000b ;检测PC4

jz a ;转到a

mov dx,offset wrong;marchine is broken

mov ah,09h

int 21h

mov dx,io8255ctr;出现故障,则需要将pc3即运行灯关掉

mov al,00000110b

out dx,al

guzhang:

mov dx,io8255c ;循环判断机器是否还是处在故障中

in al,dx

and al,00010000b

jz guzhang;

mov dx,offset right;machine is ok now

mov ah,09h

int 21h

mov dx,io8255a ;故障处理完后,机器进入正常运行态

mov al,00000111b;PC3正常运行点亮

out dx,al

mov dx,offset run;machine is running

mov ah,09h

a:

mov dx,2400h ;将2400口(计数器0)的数据打到dx in al,dx

;cmp al,-1

;jle a;结果小于或等于-1转移a

mov bl,temp ;12

sub bl,al ;bl中的内容减去al中的,并重新放入bl中mov al,bl ;将16进制转换成10进制

add al,1

mov temp3,al

mov ah,0 ;高位清零

div ten

mov temp1,ah ;将个位放入temp1中

mov bx,offset led ;bx为数码表的起始地址

xlat ;求出相应的段码

mov dx, io8255a

out dx,al;送给数码管

mov dx, io8255c

mov al,02h;十位数码管

out dx,al

mov al,0

mov dx, io8255a

out dx,al

mov dx, io8255c

mov al,01h;个位数码管

out dx,al

mov al,temp1;个位

xlat ;求出相应的段码

mov dx, io8255a

out dx,al ;显示个位

mov dx, io8255c

mov al,01h

out dx,al

mov al,0

mov dx, io8255a;显示十位

out dx,al

mov dx, io8255c

mov al,02h

out dx,al

cmp temp3,13;不相等转t

相关文档
最新文档