走马灯(灯光变幻)程序.doc_第1页
走马灯(灯光变幻)程序.doc_第2页
走马灯(灯光变幻)程序.doc_第3页
走马灯(灯光变幻)程序.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

;*; Aexp8.asm 走马灯(灯光变幻)程序 *; 内容:用DIP的8位开关控制走马灯的花样,用SW3控制走马灯的起/停 ; 运行步骤:1.按下一次开关SW3,开始灯光变幻,再按下一次则停止; 可重复进行 *; 2.按下SW3后,拨动不同的数码开关DIP,就会出现不同的灯光变幻 *; 3.按下q或者Q,退出 *;*sseg segment para stack stack dw 200 dup (?)sseg endsdseg segment para public datamessage db press SW3 to start and then press SW3 to stop,and so on!,0ah,0dh;系统提示信息 db turn on DIP one by one and display various soud-op patterns! db 0ah,0dh db if you want to quit, please hit q or Q!,0ah,0dh,$flag db 0 ;初始化状态标志变量为0t dw 0 ;初始化延时变量为0 num dw 0 ;初始化数字变量为0data1 db 80h,40h,20h,10h,08h,04h,02h,01h ;八种不同的灯光变幻组合 data2 db 01h,02h,04h,08h,10h,20h,40h,80h data3 db 80h,20h,08h,02h,40h,10h,04h,01h data4 db 01h,04h,10h,40h,02h,08h,20h,80hdata5 db 0c0h,30h,0ch,03h,0c0h,30h,0ch,03hdata6 db 03h,0ch,30h,0c0h,03h,0ch,30h,0c0hdata7 db 81h,42h,24h,18h,81h,42h,24h,18h data8 db 18h,24h,42h,81h,18h,24h,42h,81hdseg endscseg segment para public code assume ss:sseg,cs:cseg,ds:dsegm proc farstart: mov ax,ds push ax mov ax,00h push ax ;保留程序数据段地址 mov ah,09h ;显示系统提示信息 mov dx,seg message mov ds,dx mov dx,offset message int 21h ;初始化8255 mov dx,303h ;取8255的控制端口的地址 mov al,91h ;初始化8255的A口和C口高四位为输出模式 out dx,al ;B口和C口低四位为输入模式 ;初始化灯LED全灭 mov dx,301h ;取8255的端口A的地址 mov al,00h ;使8255的PA0-PA7全为0 out dx,al ;使所有的灯LED全灭 wait: ;检测q或者Q键 mov ah,0bh int 21h ;调用DOS 21H 功能0BH 进行键盘判断 inc al jnz readpc ;检测是否有键按下 mov ah,08h int 21h ;调用DOS 21H 功能08H 进行键盘输入判断 cmp al,q jz quit ;检测到q,退出 cmp al,Q jz quit ;检测到Q,退出 readpc: ;判断开关SW3的状态 mov dx,302h ;取8255的端口C的地址 in al,dx ;读端口C的值 ;当按下开关SW3时,PC2口为低电平 test al,04h ;检测PC2口状态 jnz caselp: in al,dx test al,04h jz lp ;循环检测直至放开 xor flag,01h ;将状态值取反case: cmp flag,01h ;进行状态值比较 jne stopbegin: call ledflash ;调用灯光变幻过程 call delay2 jmp wait ;灯LED全灭 stop: mov dx,301h ;取8255的端口A的地址 mov al,00h ;使8255的PA0-PA7全为0 out dx,al ;使所有的灯LED全灭 jmp waitquit: ;灯LED全灭 mov dx,301h ;取8255的端口A的地址 mov al,00h ;使8255的PA0-PA7全为0 out dx,al ;使所有的灯LED全灭 ;返回DOS mov ah,4ch ;DOS功能调用 int 21h ;返回DOSm endpdelay2 proc push cx push bx mov cx,02ffhdl4: mov bx,0ffffhdl3: dec bx jnz dl3 dec cx jnz dl4 pop bx pop cx retdelay2 endp ;检测数码开关DIP的状态,以便产生八种不同的灯光变幻ledflash proc mov dx,300h ;取8255的端口B的地址 in al,dx ;读端口B的值 cmp al,0feh ;检测PB0口是否为0 jne choice1 mov si,offset data1 ;置第一种灯光变幻组合 jmp herechoice1: cmp al,0fdh ;检测PB1口是否为0 jne choice2 mov si,offset data2 ;置第二种灯光变幻组合 jmp herechoice2: cmp al,0fbh ;检测PB2口是否为0 jne choice3 mov si,offset data3 ;置第三种灯光变幻组合 jmp herechoice3: cmp al,0f7h ;检测PB3口是否为0 jne choice4 mov si,offset data4 ;置第四种灯光变幻组合 jmp herechoice4: cmp al,0efh ;检测PB4口是否为0 jne choice5 mov si,offset data5 ;置第五种灯光变幻组合 jmp herechoice5: cmp al,0dfh ;检测PB5口是否为0 jne choice6 mov si,offset data6 ;置第六种灯光变幻组合 jmp herechoice6: cmp al,0bfh ;检测PB6口是否为0 jne choice7 mov si,offset data7 ;置第七种灯光变幻组合 jmp herechoice7: cmp al,7fh ;检测PB7口是否为0 jne choice0 mov si,offset data8 ;置第八种灯光变幻组合 jmp here ;choice0: call m0 ;调用声光变幻过程 choice0: jmp wait ;送加电数据here: add si,num mov al,si ;取当前加电数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论