计算机实验程序(硬件).doc_第1页
计算机实验程序(硬件).doc_第2页
计算机实验程序(硬件).doc_第3页
计算机实验程序(硬件).doc_第4页
计算机实验程序(硬件).doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

实验5-1;硬件连线:8254模块中的CS接译码模块的CS1,GATE0接+5V,CLK0接47KHz的时钟信号,OUT0接示波器。;8254芯片的端口地址分配:计数器0为300H,计数器1为304H,计数器2为308H,控制端口为30CH。.486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART: ;向控制端口30CH写入方式控制字,初始化计数器0MOV DX, 30CH MOV AL, 00010110B;只写低字节 OUT DX, AL;向计数器0端口300H写入计数初值MOV DX, 300HMOV AL, 47OUT DX, AL ;写初值WT: JMP WTCODE ENDSEND START实验5-2;硬件连线:8254模块中的CS接译码模块的CS1,GATE1接键正脉冲输出,CLK1接47KHz的时钟信号,OUT1接指示灯;D1。;8254芯片的端口地址分配:计数器0为300H,计数器1为304H,计数器2为308H,控制端口为30CH。;每按一次键,灯亮1S钟。.486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART: ;向控制端口30CH写入方式控制字,初始化计数器0MOV DX, 30CH MOV AL, 01110010BOUT DX, AL;向计数器1端口304H写入计数初值MOV DX, 304HMOV AX, 47000OUT DX, AL ;写初值 MOV AL,AH OUT DX,ALWT: JMP WTCODE ENDSEND START实验5-3;硬件连线:8254模块中的CS接译码模块的CS1,GATE1,GATE2接+5V,CLK2接OUT1,CLK1接47KHz的时钟信号,OUT2;接指示灯D1。;8254芯片的端口地址分配:计数器0为300H,计数器1为304H,计数器2为308H,控制端口为30CH。;定时器1方式3,初值47,输出1K;定时器2方式3,初值1000,输出1Hz.486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART: ;向控制端口30CH写入方式控制字,初始化计数器1MOV DX, 30CH MOV AL, 01010110B;只写低字节 OUT DX, AL;向计数器1端口304H写入计数初值 MOV DX, 304HMOV AL, 47OUT DX, AL ;写初值 MOV DX, 30CH MOV AL, 10110110B; OUT DX, AL;向计数器2端口308H写入计数初值 MOV DX, 308HMOV AX, 1000OUT DX, AL ;写初值 MOV AL,AH OUT DX,ALWT: JMP WTCODE ENDSEND START实验6-1;硬件连接:8255A芯片的B口接发光二极管D1D8;口地址:203 207 20b 20f.486PORT4A EQU 203HPORT4B EQU 207HPORT4C EQU 20BHPORT4CTRL EQU 20FHSDATA SEGMENT AT 0300H USE16 STACKDB 500 DUP(?)SDATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,SS:SDATAORG 4000HSTART: ;初始化第4片8255A MOV AX,SDATAMOV SS,AX MOV SP,500MOV DX, PORT4CTRL MOV AL,80HOUT DX, AL;207H是第4片8255A芯片B口的端口地址;LP:MOV DX, PORT4BMOV AL, 55HOUT DX, ALCALL DELAY MOV DX,PORT4B MOV AL,0AAH OUT DX,AL CALL DELAY JMP LPDELAY PROC NEAR MOV ECX, 0fffffHLP1: NOPNOPLOOPD LP1RET DELAY ENDP;CODEENDSEND START实验6-2;硬件连接:8255B口接开关,C口接发光二极管;口地址 203 207 20b 20f;控制字:10000010B 82h;.486codesegmentuse16assumecs:codeorg 4000hbeg:mov dx,20fh moval,82houtdx,al;8255A初始化,C口输入,A,B口输出 mov bl,0 ;存原来的开关状态 mov bh,0ffh l2:movdx,207hinal,dx;从C口读入开关状态 cmp al,bl jZ l3 ;开关状态没发生变化 mov bl,al cmpal,01hjz l1cmpal,03hjzl1;K1、K2为1转显示处理cmpal,07hjz l1;K1、K2、K3为1转显示处理cmpal,0fhjz l1;K1、K2、K3、K4为1转显示处理cmpal,1fhjz l1;K1、K2、K3、K4、K5为1转显示处理cmpal,3fhjzl1;K1、K2、K3、K4、K5、K6为1转显示处理cmpal,7fhjzl1;K1、K2、K3、K4、K5、K6、K7为1转显示处理 ;非7种规定状态,转重新读入开关状态cmp al,0ffh jz l1 mov al,00hl1:not al mov bh,all3:movecx,01ffffhl0:loopdl0;延时mov al,bhmovdx,20Bh out dx,alrolal,1;循环左移一位movbh,al;保存此时的状态jmp l2codeendsend beg实验6-3;硬件连接:8255A口接开关,B口接发光二极管;口地址 203 207 20b 20f;控制字:10010000B 90h.486codesegmentassumecs:code org 4000hstart: mov al,10010000B mov dx,20fh nop nop nopoutdx,al;8255A初始化,A口输入,B.C口输出k1:movdx,203hnopnopnopinal,dx;从A口读入开关状态mov bl,08hcmpal,0ffhjz l1;为全1,转显示处理mov bl,01Hcmpal,01hjz l1;K1为1转显示处理movbl,02Hcmpal,03hjzl1 ;K1、K2为1转显示处理movbl,03hcmpal,07hjz l1;K1、K2、K3为1转显示处理movbl,04hcmpal,0fhjz l1;K1、K2、K3、K4为1转显示处理movbl,05hcmpal,1fhjz l1;K1、K2、K3、K4、K5为1转显示处理movbl,06hcmpal,3fhjzl1;K1、K2、K3、K4、K5、K6为1转显示处理mov bl,07hcmpal,7fhjzl1;K1、K2、K3、K4、K5、K6、K7为1转显示处理 ;非7种规定状态,转重新读入开关状态 mov bl,0hl1: not blmovdx,207hnopnopmoval,blnopnopoutdx,al;显示开关为1的个数jmp k1codeendsend start实验6-4;无连线.486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART: ;初始化第一片8255A;20CH为第一片8255A芯片的控制端口MOV DX, 20CH MOV AL,80HOUT DX, AL;200H是8255A芯片A口的端口地址;MOV DX, 200HMOV AL, 92H;5OUT DX, AL;204H为8255A芯片B口的端口地址MOV DX, 204HMOV AL, 80H;8OUT DX, AL;208H为8255A芯片C口的端口地址;将8位LED的颜色设置为红色MOV DX, 208HMOV AL, 05HOUT DX, ALWT:JMP WTCODEENDSEND START实验6-5;无连线.486A EQU 57HB EQU 88HDATA SEGMENT AT 0200 USE16Sum1 db ?SUM2 DB ?DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATAORG 4000HSTART: MOV AX,DATAMOV DS,AXMov dx,20chMov eax,80808080h Out dx,eaxMOV AL,A ADD AL,BDAAMOV SUM2,ALMOV AL,0ADC AL,0 Mov sum1,al;AL 百位;sum 十位及个位;将A B sum1 sum2 显示在LED上 Lea bx,disptabMov al,A Shr al,4Mov cx,csMov ds,cxXlatMov dx,200hOut dx,alMov al,A And al,0fhMov cx,csMov ds,cxXlatMov dx,204hOut dx,al;/ 5 红 a 绿 0黄Mov al,00hMov dx,208hOut dx,al;/Mov al,B Shr al,4Mov cx,csMov ds,cxXlatMov dx,201hOut dx,alMov al,B And al,0fhMov cx,csMov ds,cxXlatMov dx,205hOut dx,al;/ 5 红 a 绿 0黄Mov al,0ahMov dx,209hOut dx,al;/Mov ax,dataMov ds,axMov AL,sum1 Shr al,4Mov cx,csMov ds,cxXlatMov dx,202hOut dx,alMov ax,dataMov ds,axMov AL,sum1 And al,0fhMov cx,csMov ds,cxXlatMov dx,206hOut dx,al;/ 5 红 a 绿 0黄Mov al,05hMov dx,20ahOut dx,al;/Mov ax,dataMov ds,axMov AL,sum2 Shr al,4Mov cx,csMov ds,cxXlatMov dx,203hOut dx,alMov ax,dataMov ds,axMov al,sum2 And al,0fhMov cx,csMov ds,cxXlatMov dx,207hOut dx,al;/ 5 红 a 绿 0黄Mov al,05hMov dx,20bhOut dx,alWT:JMP WTDISPTAB db 0C0H,0F9H,0A4H,0B0H DB 099H,092H,082H,0F8H DB 080H,090H,088H,083H DB 0C6H,0A1H,086H,08EHCODEENDSEND START实验7-1;硬件连线:8255A的PA0PA5接LED的位选DS1DS6,PB0PB7接LED的段选adp。;参考程序.486PORTAEQU203HPORTBEQU207HPORTCEQU20BHCTRLEQU20FHCODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART: ;初始化第4片8255AMOV DX, CTRLMOV AL, 80HOUT DX, AL;段选口送5的字型码MOV DX, PORTBMOV AL, 7fHOUT DX, ALNXTR:MOV BL, 6MOV AL, 01HNXTB: MOV DX, PORTAOUT DX, AL ;送位选信号CALL DLYL ;调用长延时子程序SHL AL, 1DEC BLJNZ NXTBJMP NXTRDLYLPROCPUSH ECXMOV ECX, 04FFFFHDLYL_AGN: NOPLOOPDDLYL_AGNPOP ECXRETDLYLENDPCODE ENDSEND START实验7-2;硬件连线:8255A的PA0PA5接LED的位选DS1DS6,PB0PB7接LED的段选adp。;参考程序.486PORTAEQU203HPORTBEQU207HPORTCEQU20BHCTRLEQU20FHDATA SEGMENT AT 0200 USE16MESS2 DB 7 dup(?); 0到6的段码DISP DB 6 dup(?); 1,2,3,4,5,6DATA ENDSCODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART: mov ax,data Mov es,ax Mov ax,cs Mov ds,ax Lea di,mess2 Lea si,tab Mov cx,13 rep Movsb Mov ax,data Mov ds,ax;初始化第4片8255AMOV DX, CTRLMOV AL, 80HOUT DX, ALLp:Call disply Jmp lp; DISPLY PROCMOV AH,1H;0010 0000位选LED6LEA SI,DISPL1:LEA BX,MESS2MOV AL,SIXLAT; 查出(BX+AL)给AL,即字形码MOV DX,portbOUT DX,AL ;送段码MOV DX,portaMOV AL,AHOUT DX,AL;送位选信号MOV CX,800L2:LOOP L2SHL AH,1;下一位显示下一个数字Cmp ah,40h JE END1INC SIJMP L1END1:RETDISPLY ENDPtab DB 3fh,06h,5bh,4fh,0e6h,6dh,7dh; 0到6的段码 DB 1,2,3,4,5,6CODE ENDSEND START实验7-3A口:位B口:段C口:开关.486code segment use16assume cs:codeorg 4000hstart:mov dx,20fhmov al,10001001bout dx,all0:mov dx,20bhin al,dxcmp al,1jz l1cmp al,3jz l2mov al,0mov dx,203hout dx,aljmp l0l1:mov cl,15h ; the 1st, 3rd, 5th LED lightenjmp l3l2:mov cl,2ah ; the 2nd, 4th ,6th LED lightenl3:mov dx,207hmov al,7fh ; 8out dx,almov al,clmov dx,203hout dx,alnopnopnopnop ; i think its unnecessary to use delay programjmp l0code endsend start实验8-1;硬件连线:第4片8255A的PA0PA5与LED位信号DS1DS6相连,;第4片8255A的PB0PB7接LED段信号。;键盘行接第4片8255A的PC4PC7,键盘列接第4片8255A的PC0PC2;8255方式控制字:10001000B 88H.486;第4片8255A芯片的端口地址PORTAEQU 203H;位信号PORTBEQU 207H;段信号PORTCEQU 20BH;高位行/低位列信号CTRLEQU 20FH;F段码71H;-段码40HK11EQU 0b7H ;K11键的键特征值K10EQU 0bbH ;K10键的键特征值CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART: ;初始化8255AMOV DX, CTRLMOV AL, 88HOUT DX, ALKSCAN:MOV BL, 0FBH ;从Q2列开始扫描11111011BNXTCOL:MOV AL, BLMOV DX, PORTCOUT DX, AL ;送出列信号IN AL, DX ;读入行信号AND AL, 0F0HCMP AL, 0F0HJNZ FNDKEY ;不全为1即有键按下,跳转ROR BL, 1 ;调整列信号JC NXTCOL JMP KSCAN ;4列均无键按下,重新扫描FNDKEY: ;以行信号低4位,列信号为高4位;形成键特征值SHL BL,4 SHR AL,4OR BL, ALCALL DLYSKEYUP: ; 等待按键松开MOV AL, 0MOV DX, PORTCOUT DX, ALIN AL, DXAND AL, 0F0HCMP AL, 0F0HJNZ KEYUP MOV dx,PORTA;MOV AL,3fh; OUT DX,ALCMP BL, K11JZ DSP_K11 CMP BL,K10 JZ DSP_K10;JMP KSCANDSP_K11:mov al,40hMov dx,PORTBOut dx,alJMP KSCANDSP_K10:mov al,71HMov dx,PORTBOut dx,alJMP KSCANDLYSPROCPUSH CXMOV CX, 0FFH;DLYS_AGN:NOP;LOOP DLYS_AGNPOP CXRETDLYSENDPCODE ENDSEND START实验8-2;硬件连线:第4片8255A的PA0PA5与LED位信号DS1DS6相连,;第4片8255A的PB0PB7接LED段信号。;键盘列接第4片8255A的PC4PC6,键盘行接第4片8255A的PC0PC3;8255方式控制字:10000001B 81H.486;第4片8255A芯片的端口地址PORTAEQU 203HPORTBEQU 207HPORTCEQU 20BHCTRLEQU 20FHdata segment AT 0200 USE16DISPTAB DB 12 dup(?)KEYTAB DB 12 dup(?)data endsCODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART: ;初始化8255AMov ax,dataMov es,axLea di,disptab Mov ax,cs Mov ds,ax LEA SI,DISP MOV CX,24 CLD REP MOVSBMOV AX,DATA MOV DS,AXMOV DX, CTRLMOV AL, 81HOUT DX, ALKSCAN:MOV BL, 0BBH ;从Q2列开始扫描10111011低位的0为标记NXTCOL:MOV AL, BLMOV DX, PORTCOUT DX, AL ;送出列信号IN AL, DX ;读入行信号AND AL, 0FHCMP AL, 0FHJNZ FNDKEY ;不全为1即有键按下,跳转ROR BL, 1 ;调整列信号JC NXTCOL JMP KSCAN ;4列均无键按下,重新扫描FNDKEY: ;以行信号为低4位,列信号为高4位;形成键特征值 AND BL, 0F0HOR BL, ALCALL DLYSKEYUP: ; 等待按键松开 MOV AL, 0MOV DX, PORTCOUT DX, ALIN AL, DXAND AL, 0FHCMP AL, 0FHJNZ KEYUPLEA SI,KEYTAB ;得到特征码表首地址 MOV BH,0;键号初值为0LOP4: MOV AL,SICMP AL,BLJE LOP5;按键号存BH中INC BHINC SIJMP LOP4LOP5: MOV AL,BHLEA BX,DISPTAB XLAT;根据按键的号码查出显示段码MOV DX,PORTBOUT DX,ALMOV AL,1Hmov dx,PORTAout dx,al JMP KSCANDLYSPROCPUSH CXMOV CX, 0FFHDLYS_AGN:NOPLOOP DLYS_AGNPOP CXRETDLYSENDPDISP DB 3fh,6h,5bh,4fh,66h,6dh,7dh,7h,7fh,6fh,77h,7chKEY DB 0eeh,0edh,0ebh,0e7h,0deh,0ddh,0dbh,0d7h,0beh,0bdh,0bbh,0b7hCODE ENDSEND START实验8-3硬件连线:8255A口接开关,C口高四位接键盘行,低四位为键盘列。 .486code segment use16assume cs:codeorg 4000hstart: mov dx,20ch;初始化8255Amov al,80hout dx,almov dx,20fhmov al,98hout dx,alinitial:mov dx,200h;0dmov al,0c0hout dx,alnopnopmov dx,204hmov al,0a1hout dx,al mov bl,0; switch: mov dx,203h;从A口读入开关K3,K3=1跳转in al,dx test al,4jnz wtkscan:mov al,0fdh;读入K7=0或1mov dx,20bhout dx,alin al,dxand al,0f0hcmp al,70hjz discolorjmp switchdiscolor:mov dx,208h;颜色切换:黄(00)红(05)绿(0a),加5切换mov al,bl out dx,alnopnopcall dlyadd bl,5hcmp bl,0fhjnz switchmov bl,0jmp switchwt:jmp wtdly proc ;延时push ecxmov ecx,04ffffhagn: loopd agnpop ecxretdly endpcode endsend start实验9-1;硬件连线;8255A的PC0PC7与发光二极管D1D8相连。;8254的CS接译码模块的CS1,CLK1接频率为47KHz的时钟信号,GATE1接+5V,OUT1接8259(1)的IRQ0。;8259(1)的CS-1接译码模块的CS2,SP/1接+5V,INT1接CPU的INTR。;各芯片端口地址:;8254地址为:计数器0300H,计数器1304H,计数器2308H,控制端口30CH。;8255A(4)地址为:A口203H,B口207H,C口20BH,控制端口20FH。;8259(1)地址为:偶地址320H,奇地址328H。;各芯片初始化情况:;8254初始化:计数器1设置为方式0,计数初值为47000,完成1秒定时。;8255初始化:C口设置为方式0,输出。;8259初始化: ICW1(偶地址)设定为上升沿触发,单片,写ICW4,即00010011B;;ICW2(奇地址)设定中断类型号为40H47H,即01000000B;;ICW3(奇地址)不写;;ICW4(奇地址)设定为全嵌套,一般结束方式,8086以上,即00000001B。;写OCW1,开放IRQ0中断,并且填写中断向量,中断类型号40H。.486CTRL_8254EQU30CH ;8254控制端口CUNT0EQU300H ;8254计数器0CUNT1EQU304H ;8254计数器1CTRL_8255EQU20FH ;8255A(4)控制端口PORTCEQU20BH ;8255A(4) C口地址ADDR0EQU320H ;8259偶地址ADDR1EQU328H ;8259奇地址INTQEQU40H ;中断类型号CODE SEGMENT USE16ASSUME CS:CODEORG 2000HSTART: ;初始化8254MOV DX, CTRL_8254MOV AL, 01110000BOUT DX, ALMOV DX, CUNT1MOV AX, 47000OUT DX, ALMOV AL, AHOUT DX, AL;初始化8255(4)及小灯状态MOV DX, CTRL_8255MOV AL, 80HOUT DX, ALMOV BL, 0FEHMOV DX, PORTCMOV AL, BLOUT DX, AL;初始化8259MOV DX, ADDR0 ;写ICW1MOV AL, 00010011B OUT DX, ALMOV DX, ADDR1 ;写ICW2MOV AL, 40H OUT DX, ALMOV DX, ADDR1 ;写ICW4MOV AL, 01HOUT DX, ALMOV DX, ADDR1 ;改写OCW1,开放IRQ0IN AL, DXAND AL, 0FEHOUT DX, AL;装填中断向量CLIMOV AX, 0MOV DS, AXLEA AX, INTP1SMOV DS:INTQ*4, AXMOV AX, SEG INTP1SMOV DS:INTQ*4+2, AXSTIWT: NOPJMP WT;中断服务子程序INTP1S PROCMOV DX, CUNT1MOV AX, 47000OUT DX, ALMOV AL, AHOUT DX, ALROL BL, 1 MOV DX, PORTCMOV AL, BLOUT DX, ALMOV AL, 20H ;发送EOI结束命令MOV DX, ADDR0OUT DX, AL;需要重装初值IRETINTP1S ENDPCODE ENDSEND START实验9-2;硬件连线;8255A的PA0PA7与发光二极管D1D8相连。PC3接8259(1)的IRQ0,PC6接脉冲信号;8259(1)的CS-1接译码模块的CS2,SP/1接+5V,INT1接CPU的INTR。;各芯片端口地址:;8255A(4)地址为:A口203H,B口207H,C口20BH,控制端口20FH。;8259(1)地址为:偶地址320H,奇地址328H。;各芯片初始化情况:;8255初始化:A口设置为方式1,输出。;8259初始化: ICW1(偶地址)设定为上升沿触发,单片,写ICW4,即00010011B;;ICW2(奇地址)设定中断类型号为40H47H,即01000000B;;ICW3(奇地址)不写;;ICW4(奇地址)设定为全嵌套,一般结束方式,8086以上,即00000001B。;写OCW1,开放IRQ0中断,并且填写中断向量,中断类型号40H。.486CTRL_8255EQU20FH ;8255A(4)控制端口PORTAEQU203H ;8255A(4) C口地址ADDR0EQU320H ;8259偶地址ADDR1EQU328H ;8259奇地址INTQEQU40H ;中断类型号CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART: ;初始化8255(4)及小灯状态MOV DX, CTRL_8255MOV AL, 0A0HOUT DX, ALMOV BL, 7FHMOV DX, PORTAMOV AL, BLOUT DX, AL MOV AL,0DH;8255开中断 MOV DX, CTRL_8255 OUT DX,AL;初始化8259MOV DX, ADDR0 ;写ICW1MOV AL, 00010011B OUT DX, ALMOV DX, ADDR1 ;写ICW2MOV AL, 40H OUT DX, ALMOV DX, ADDR1 ;写ICW4MOV A

温馨提示

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

评论

0/150

提交评论