欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    西南交大 微机接口 实验代码.doc

    • 资源ID:2883708       资源大小:61.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    西南交大 微机接口 实验代码.doc

    开关实验:io8255aequ 288hio8255cequ 28ahio8255zequ 28bhcode segmentassume cs:codestart:mov dx,io8255zmov al,8bhout dx,alinout:mov dx,io8255cin al,dxmov dx,io8255aout dx,almov dl,0ffhmov ah,06hint 21hjz inoutmov ah,4chint 21hcode endsend start 交通灯控制实验:data segmentio8255c equ 28Ahio8255z equ 28Bhportc1 db 21h db 81h,01h,81h,01h,81h,01h,81h,01h,81h,01h,81h,01h db 44h db 42h,40h,42h,40h,42h,40h,42h,40h,42h,40h,42h,40h db 0ffhdata endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,io8255z mov al,90h out dx,al mov dx,io8255cre_on: mov bx,0;on: mov al,portc1bx cmp al,0ffh jz re_on out dx,al inc bxmov cx,200test al,24hjz de1mov cx,10000de1: mov di,9000de0: dec di jnz de0 loop de1 push dx mov ah,06hmov dl,0ffhint 21hpop dxjz onexit:mov ah,4ch int 21hcode endsend start七段数码管静态显示实验:io8255aequ 288hio8255zequ 28bhdata segmentled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1db 0dh,0ah,Input a num(0-9),other key is exit,0dh,0ah,$data endscode segment assume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,io8255zmov ax,80hout dx,alsss:mov dx,offset mesg1mov ah,09hint 21hmov ah,01int 21hcmp al,0jl exitcmp al,9jg exitsub al,30hmov bx,offset ledxlatmov dx,io8255aout dx,aljmp sssexit:mov ah,4chint 21hcode endsend start数码管循环显示0099data segment io8255a equ 288h io8255b equ 289hio8255c equ 28ahio8255z equ 28bh led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh buffer1 db 0,0 bz dw 01,00data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出mov al,80hout dx,almov di,offset buffer1 ;设di为显示缓冲区loop1: mov cx,0300h;循环次数loop2: mov bh,02 lll: mov byte ptr bz,bhpush didec diadd di,bzmov bl,di ;bl为要显示的数pop dimov bh,0mov si,offset led;置led数码管偏移地址为SIadd si,bx;求出对应的led码mov al,byte ptrsimov dx,io8255c;自8255A的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255cout dx,alpush cxmov cx,3000 ;若显示过快,可更改cx值最大为0ffffhdelay: loop delay ;延时pop cxmov bh,byte ptr bzshr bh,1jnz lllloop loop2 ;循环延时mov ax,word ptrdi mov ah,01int 16hjne exit ;有键按下转exitmov ax,word ptrdiinc alaaamov di,al;al中为十位mov di+1,ah;ah中为个位jmp loop1exit: mov dx,io8255amov al,0;关掉数码管显示out dx,almov ah,4ch;返回DOSint 21hcode endsend start键盘接口实验(行扫描法)data segmentio8255a equ 288hio8255c equ 28ahio8255z equ 28bhkey db 37h,38h,39h,41h,54h,52h db 34h,35h,36h,42h,53h,4dh db 31h,32h,33h,43h,48h,4ch db 30h,46h,45h,44h,58h,4ehdata endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,axlp0: mov dx,io8255z mov al,90h out dx,al; mov di,0 mov si,0 lp1:mov al,00h mov dx,io8255c out dx,al mov dx,io8255a in al,dx and al,3fh cmp al,3fh jz lp1 call DELAY mov ah,0feh mov cx,4 lp2:mov al,ah mov dx,io8255c out dx,al mov dx,io8255a in al,dx and al,3fh cmp al,3fh jnz aa; rol ah,1 loop lp2 jmp lp1 aa: push ax mov dx,io8255a in al,dx nop nop nop nop nop and al,3fh cmp al,3fh jnz aa pop axl4: mov cx,6lp4:shr al,1 jnc l3 inc si loop lp4l3: mov cx,4 mov al,ah lp3:shr al,1 jnc lp5 inc di loop lp3lp5:mov bx,di mov al,6 mul bl add ax,sidisp: mov bx,offset key xlat mov dh,0 mov dl,al mov ah,2 int 21h jmp lp0exit: mov ah,4ch int 21h DELAY PROC NEAR PUSH CX MOV CX,20h L1:loop L1 pop cx ret DELAY ENDP code ends end startBCA: mov al,ahmov dx,io8255cout dx,al;输出行值mov dx,io8255ain al,dx;读入列值and al,00111111b;保留低4位有效值cmp al,00111111b;判断A0行是否有键按下mov bl,al;有键按下,确定该键的值rol ah;本行无键按下则继续查找下一行,循环左移(使下一行输出0)loop BCAjmp ABCrealy:mov dx,io8255cin al,dxnopnopnopand al,0fhcmp al,0fhjnz realymov cx,4mov al,bllp1: shr al,1jnc lp2inc diloop lp1lp2:mov cx,6mov al,ahlp20:shr al,1jnc lp3inc siloop lp20lp3:mov bx,dimov al,6mul bladd ax,sidisp:mov bx,offset keyxlatmov dh,0mov dl,almov ah,2int 21hjmp lp0exit:mov ah,4chint 21hdelay proc nearpush cxmov cx,20hl1:loop l1 pop cx retdelay endpcode endsend startdata segment io8255a equ 288h io8255b equ 289h io8255c equ 28ah io8255z equ 28bh key db 37h,38h,39h,41h,54h,52h db 34h,35h,36h,42h,53h,4dh db 31h,32h,33h,43h,48h,4ch db 30h,46h,45h,44h,58h,4eh led1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh led2 db 77h,7ch,39h,5eh,79h,71hdata endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,axlp0: mov dx,io8255z mov al,90h out dx,al;c shu chu ,a shu ru lp1: mov di,0 mov si,0 mov al,00h mov dx,io8255c out dx,al mov dx,io8255a in al,dx and al,3fh cmp al,3fh jz lp1 call DELAY mov ah,0feh mov cx,4lp2:mov al,ah mov dx,io8255c out dx,al mov dx,io8255a in al,dx and al,3fh cmp al,3fh jnz realy;you jian an xia rol ah,1 loop lp2 jmp lp1realy:push axmov dx,io8255ain al,dxnopnopnopnopnopand al,3fhcmp al,3fhjnz realypop axl4: mov cx,6lp4:shr al,1 jnc l3 inc si loop lp4l3: mov cx,4 mov al,ah lp3:shr al,1 jnc lp5 inc di loop lp3lp5:mov bx,di mov al,6 mul bl add ax,sidisp: mov bx,offset key xlat cmp ax,39hjl llcmp ax,40hjg lll ll: sub ax,30h mov bx,offset led1 xlat mov dx,io8255b out dx,ax jmp lp1lll: sub ax,41h mov bx,offset led2 xlat mov dx,io8255b out dx,ax jmp lp1exit: mov ah,4ch int 21hdelay proc near push cx mov cx,20hl1: loop l1 pop cx retdelay endpcode endsend start 实验三3.1timer_ctl equ 283htimer0 equ 280hio8255z equ 28bhio8255c equ 28ahcode segment assume cs:codestart: mov dx,io8255z mov al,80h out dx,al mov al,00010000b mov dx,timer_ctl out dx,al mov dx,timer0 mov al,9 out dx,aldisplay: mov al,00000000b mov dx,timer_ctl out dx,al mov dx,timer0 in al,dx mov bl,al mov al,9 sub al,bl mov dx,io8255c out dx,al mov ah,06h mov dl,0ffh int 21h jz display mov ah,4ch int 21hcode endsend start3.2timer_ctl equ 283htimer0 equ 280htimer1 equ 281hmode03 equ 36hmode12 equ 76hcode segment assume cs:codestart: mov dx,timer_ctl mov al,mode03 out dx,al mov dx,timer0 mov ax,500 out dx,al mov al,ah out dx,al mov dx,timer_ctl mov al,mode12 out dx,al mov dx,timer1 mov ax,500 out dx,al mov al,ah out dx,al mov ah,4ch int 21h code endsend start3.3timer0 equ 280htimer1 equ 281htimerctl equ 283hio8255a equ 288hio8255z equ 28bhcode segment assume cs:codestart: mov dx,io8255z mov al,90h out dx,alll1: mov al,0 out dx,al call delay mov al,1 out dx,al call delay jmp ll1delay proc near push dx mov dx,timerctl mov al,36h out dx,al mov dx,timer0 mov ax,1000 out dx,al mov al,ah out dx,al mov dx,timerctl mov al,70h out dx,al mov dx,timer1 mov ax,500 out dx,al mov al,ah out dx,alll2: mov ah,06 mov dl,0ffh int 21h jne exit mov dx,io8255a in al,dx and al,01 jz ll2 pop dx retexit: mov ah,4ch int 21hdelay endpcode endsend start3.4data segmentio8255a equ 288hio8255z equ 28bhtimer0 equ 280htimerctl equ 283htable dw 524,588,660,784,880,988,1048 ;高音的;table dw 262,294,330,347,392,440,524 ;低音的msg db 'Press 1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$'data endscode segmentassume cs:code, ds:datastart: mov ax,data mov ds,ax mov dx,offset msg mov ah,9 int 21hsing: mov ah,7 int 21h cmp al,1bh je finish cmp al,'1' jl sing cmp al,'8' jg sing sub al,32h shl al,1 mov bl,al mov bh,0 mov ax,4240H mov dx,0FH div word ptrtable+bx mov bx,ax mov dx,timerctl mov al,00110110B out dx,al mov dx,timer0 mov ax,bx out dx,al mov al,ah out dx,al mov dx,io8255z mov al,10000000B out dx,al mov dx,io8255a mov al,03h out dx,al call delay mov al,0h out dx,al jmp singfinish: mov ax,4c00h int 21hdelay proc near push cx push ax mov ax,15 x1: mov cx,0ffffh x2: dec cx jnz x2 dec ax jnz x1 pop ax pop cx retdelay endpcode endsend start3.5data segmentio8255a equ 288hio8255z equ 28bhtimer0 equ 280htimerctl equ 283h;table dw 524,588,660,698,784,880,998,1048table dw 262,294,330,347,392,440,494,524;music_dataxxx db 1,1,5,5,6,6,5,4,4,3,3,2,2,1,5,5,4,4,3,3,2,5,5,4,4,3,3,2,1,1,5,5,6,6,5,4,4,3,3,2,2,1music_datalzlh db 1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1,5,6,5,4,3,1,2,5,1,2,5,1mus_t1 db 50,50,50,100,50,50,50,100,50,50,25,50,50,25,15,15,15,15,50,25,15,15,15,15,50,25,50,75,50,50,70,50;mus_t db 50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100msg db 'xiao xing xing:',0dh,0ah,'$'data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,offset msg mov ah,9 int 21h ;tishi mov bx,0 push bx sing: pop bx ; mov si,offset music_dataxxx mov si,offset music_datalzlh add si,bx push bx mov al,byte ptrsi ; que pu zhi ;cmp al,'1' ;jl sing ;cmp al,'8' ;jg sing ;sub al,31h shl al,1 mov bl,al mov bh,0 mov ax,4240h mov dx,0fh div word ptrtable+bx mov bx,ax mov dx,timerctl mov al,00110110B out dx,al mov dx,timer0 mov ax,bx out dx,al mov al,ahout dx,al mov dx,io8255z mov al,10000000B out dx,al mov dx,io8255a mov al,03h out dx,al lea si,mus_t1 ;lea si,mus_t mov bx,si call MUS_D ;out dx,al call delay mov al,0h out dx,al ;guan yang sheng qi pop bx cmp bx,42 je hehe add bx,1 push bx jmp singhehe: mov bx,0 push bx jmp sing finish: mov ax,4c00h int 21h MUS_D procLeng: mov cx,2081 delay1: Loop delay1 dec bx jnz LengretMUS_D endp delay proc near push cx push ax mov ax,15x1:mov cx,0ffffhx2:dec cx jnz x2 dec ax jnz x1 pop ax pop cx retdelay endpcode endsend start 实验四int00 equ 288hint01 equ 289hio8255c equ 282hio8255z equ 283hN equ 7code segmentassume cs:codestart: call I8255 cli mov bx,0 call WRITE0B call I8259 mov cl,0 stil1: cmp cl,N jnz l1 mov ah,4ch int 21hINT_SERVICE PROC push dx ; mov dx,io8255c ;mov al,0FFH ;out dx,al inc bx mov al,bl mov ah,bh mov dx,io8255c out dx,ax NOP NOP NOP mov al,20h out 20h,al NOP pop dx iretNT_SERVICE ENDPWRITE0B PROC mov ax,code mov ds,ax mov dx,offset INT_SERVICE mov ax,250bh int 21h retWRITE0B ENDPI8255 PROC mov al,80h mov dx,io8255z out dx,al retI8255 ENDPI8259 PROC mov al,00010011b mov dx,int00 out dx,al mov al,8 mov dx,int01 out dx,al mov al,00000001b out dx,al mov al,0 out dx,al in al,21h and al,0f7h out 21h,al retI8259 ENDPcode endsend start实验5锯齿波:io0832a equ 290hcode segmentassume cs:codestart: mov cl,0 mov dx,io0832all1: mov al,cl out dx,al add cl,1 push dx mov ah,06h ;判断是否有键按下 mov dl,0ffh int 21h pop dx jz ll1mov ah,4chint 21hcode endsend start正弦波:data segmentio0832a equ 290hsin db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66hdata endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,axl1: mov si,offset sin mov bh,32ll1: mov al,si mov dx,io0832a out dx,al mov ah,06h ;判断是否有键按下 mov dl,0ffh int 21h jne exit mov cl,1delay: loop delay inc si dec bh jnz ll1 jmp l1exit: mov ah,4ch int 21hcode endsend start直流电机转速控制:data segmentIo0832a equ 290hio8255c equ 28ahio8255z equ 28bhdata endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax mov al,85h ;8255初始化 mov dx,io8255z out dx,al lp1: mov dx,io8255c ;开关值赋给cx作为循环次数 in al,dx mov ah,0 mov cx,ax lp2: mov al,0ffh mov dx,io8032a out dx,al mov ah,06h ;判断是否有键按下 mov dl,0ffh int 21h jne exit loop lp2lp3: mov cx,32lp4: mov al,80h mov dx,io8032a out dx,al mov ah,06h ;判断是否有键按下 mov dl,0ffh int 21h jne exit loop lp4 jmp lp1exit: mov ah,4chint 21hcode endsend start 实验六模数转换io0809a equ 298hcode segment assume cs:codestart:mov dx,io0809a out dx,al mov cx,0ffhdelay:loop delay in al,dx mov bl,al mov cl,4 shr al,cl call disp mov al,bl and al,

    注意事项

    本文(西南交大 微机接口 实验代码.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开