《实验开发与调试环境.ppt》由会员分享,可在线阅读,更多相关《实验开发与调试环境.ppt(77页珍藏版)》请在三一办公上搜索。
1、实验开发与调试环境,1.硬件环境,实验开发与调试环境,2.软件环境:DeChangTS集成环境,实验开发与调试环境,2.软件环境:DeChangTS集成环境,实验开发与调试环境,3.实验环境的内存资源与分配,主机系统有32K的RAM空间,地址为0000:0000H0000:7FFFH,分配情况如下:,实验开发与调试环境,4.程序模板,.486DATA SEGMENT AT 0200H USE16;此处定义变量DATA ENDSSDATA SEGMENT AT 0300H USE16 STACKDB 500 DUP(?)SDATA ENDSCODE SEGMENT USE16ASSUME CS:
2、CODE,DS:DATAORG 4000HBEG:MOV AX,SDATAMOV SS,AXMOV SP,500MOV AX,DATAMOV DS,AX;此处添加用户代码WT:JMP WTCODE ENDSEND BEG,实验开发与调试环境,5.注意事项,AT 伪指令说明段基址。如果不加说明,那么段基址由编译系统分配。ORG 伪指令说明起始偏移地址。STACK 伪指令说明堆栈段的开始。USE16 伪指令引导汇编程序在80386 Pentium Pro中使用16位指令模式及数据长度。,实验开发与调试环境,5.注意事项,任何在实方式下运行的程序都必须包含USE16伪指令代码段的段基址不能由用户设定
3、,需要用ORG指定起始偏移地址。DeChangeTS环境中,数据段中定义的变量,只会为变量分配存储单元,不会初始化变量。如果程序没有定义堆栈段,那么复位后系统初始设置的堆栈位置为0000H:2000H。程序最后一条指令一般为WT:JMP WT,使CPU在此循环等待,实验装置介绍,1.实验装置实物,实验装置介绍,1.实验装置实物,实验装置介绍,2.实验装置上的译码输出,实验装置介绍,3.实验装置上的中断程序,实模式下,第0、1、2、3、4、11、12中断都由实验装置的监控程序使用.12中断为用户提供显示功能,可以在8位8段LED上显示字符和字符串,只能显示数字和部分字符。,实验装置介绍,3.实验
4、装置上的中断程序,显示字符格式为:MOVAX,ABMOVCH,0 INT12该功能最多只能显示两个字符,颜色固定为红色。也可只显示一个字符,AH的字符显示在左边,AL的字符在右边的LED上显示。显示字符串格式为:MOVAX,OFFSET STRING1MOVCH,1AHMOVCL,LENGTH STRING1INT12可以显示一个字符串,字符数不大于8个,超出部分不显示。CH寄存器设置颜色,10H为黄色,15H为红色,1AH为绿色。CL寄存器说明待显示字符串的长度。,实验装置介绍,3.实验装置上的中断程序,例:调用12中断显示红色的字符串“S0123456”.486CODESEGMENT US
5、E16ASSUME CS:CODEORG 4000HSTART:显示红色字符串S0123456LEA AX,STR1;说明字符串首地址MOV CH,15H;设置颜色MOV CL,8;说明字符串长度INT 12WT:JMP WTSTR1 DB S0123456CODE ENDSEND START,实验装置介绍,3.实验装置上的中断程序,实验装置的接口电路,1.定时器/计数器8254模块,实验装置的接口电路,1.定时器/计数器8254模块,实验装置的接口电路,1.定时器/计数器8254模块,定时器/计数器8254接口电路,实验装置的接口电路,1.定时器/计数器8254模块,定时器/计数器8254地
6、址和片选决定口地址,实验装置的接口电路,1.定时器/计数器8254模块,编程使8254计数器2产生周期为1秒的方波,并将计数器的输出与小灯相连接,观察小灯的变化情况。硬件连线:8254模块中的CS接译码模块的CS1,GATE2接+5V,CLK2接47KHz的时钟信号,OUT2接小灯D1。8254芯片的端口地址分配:计数器0为300H,计数器1为304H,计数器2为308H,控制端口为30CH。,实验装置的接口电路,1.定时器/计数器8254模块,.486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART:;向控制端口30CH写入方式控制字,初始化计数器
7、2MOV DX,30CH MOV AL,10110110B OUT DX,AL;向计数器2端口308H写入计数初值MOV DX,308HMOV AX,47000OUT DX,AL;先写低字节MOV AL,AHOUT DX,AL;后写高字节WT:JMP WTCODE ENDSEND START,实验装置的接口电路,1.定时器/计数器8254模块,习题2 计数器1工作于方式1,观察用GATE的正脉冲触发计数。硬件连线:8254模块中的CS接译码模块的CS1,GATE1接键正脉冲输出,CLK1接47KHz的时钟信号,OUT1接指示灯D1。8254芯片的端口地址分配:计数器0为300H,计数器1为30
8、4H,计数器2为308H,控制端口为30CH。每按一次键,灯亮1S钟。,实验装置的接口电路,1.定时器/计数器8254模块,.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,实验装置的接口电路,2.并行接口模块8255A
9、,实验装置的接口电路,2.并行接口模块8255A,实验装置的接口电路,2.并行接口模块8255A,共阳极8段数码管工作原理,实验装置的接口电路,2.并行接口模块8255A,共阴极8段数码管工作原理,实验装置的接口电路,2.并行接口模块8255A,实验装置的接口电路,2.并行接口模块8255A,采用共阳极段码:C0H,F9H,颜色控制:,实验装置的接口电路,2.并行接口模块8255A,8255A的片选信号生成:,实验装置的接口电路,2.并行接口模块8255A,BE0 BE1 BE2 BE3 与所访问的数据总线之间的关系表,实验装置的接口电路,2.并行接口模块8255A,由于片选已接好,8255A
10、口地址固定:,实验装置的接口电路,2.并行接口模块8255A,编程实现使由4片8255A控制的8位LED从左到右显示红色的“3C2D1E0F”。程序一次输出32位数据,当DX=20CH时,OUT DX,EAX指令将EAX中的数据送给4个端口地址:20CH20FH。,实验装置的接口电路,2.并行接口模块8255A,.486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART:;初始化4片8255A;20CH-20FH为4片8255A芯片的控制端口MOV DX,20CH MOV EAX,80808080HOUT DX,EAX;200H-203H是4片8255
11、A芯片A口的端口地址;使4位LED显示3210MOV DX,200HMOV EAX,0C0F9A4B0HOUT DX,EAX,实验装置的接口电路,2.并行接口模块8255A,;204H-207H为4片8255A芯片B口的端口地址;控制4位LED显示CDEFMOV DX,204HMOV EAX,8E86A1C6HOUT DX,EAX;208H-20BH为4片8255A芯片C口的端口地址;将8位LED的颜色设置为红色MOV DX,208HMOV EAX,05050505HOUT DX,EAXWT:JMP WTCODEENDSEND START,实验装置的接口电路,2.并行接口模块8255A,习题2
12、:利用8个开关K1K8控制8个发光二极管D1D8的状态。要求:当只有开关K1扳向前时,发光二极管从右到做逐个循环点亮;当只有开关K1、K2扳向前时,发光二极管从右到左成对逐次循环点亮;当只有开关K1、K2和K3扳向前时,发光二极管从右到左3个为一组逐次循环点亮;以此类推,当全部开关都扳向前时,8个发光二极管全亮;当开关状态不满上述情况时,发光二极管全部熄灭。任何时候扳动开关,二极管状态随之改变。通过8255A芯片的B口读入开关状态,C口控制发光二极管。,实验装置的接口电路,2.并行接口模块8255A,硬件连接:8255B口接开关,C口接发光二极管;口地址 203 207 20b 20f;控制字
13、:10000010B 82h,.486codesegmentuse16assumecs:codeorg 4000hbeg:mov dx,20fh moval,82houtdx,al;8255A初始化,C口输入,A,B口输出,实验装置的接口电路,2.并行接口模块8255A,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转显
14、示处理cmpal,0fhjz l1;K1、K2、K3、K4为1转显示处理,实验装置的接口电路,2.并行接口模块8255A,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,0ffhjz l1mov al,00hl1:not al mov bh,al,实验装置的接口电路,2.并行接口模块8255A,l3:movecx,01ffffhl0:loopdl0;延时mov al
15、,bhmovdx,20Bh out dx,alrolal,1;循环左移一位movbh,al;保存此时的状态jmp l2codeendsend beg,实验装置的接口电路,2.并行接口模块8255A,编程实现让第1片8255A所控制的两个三色LED显示红色的“58”。硬件连接不需要,.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;5,
16、实验装置的接口电路,2.并行接口模块8255A,编程实现让第1片8255A所控制的两个三色LED显示红色的“58”。硬件连接不需要,OUT 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,实验装置的接口电路,3.8段LED显示器,采用共阴极段码,实验装置的接口电路,3.8段LED显示器,注意:由于段信号接有锁存器,可以通过锁存器传送段信号,此时就不
17、需要接段信号线,但要接KEYCS2选通线,并由此确定口地址位信号高电平选通,实验装置的接口电路,3.8段LED显示器,用8255A芯片的A口控制6位共阴极LED的位选,B口控制段选,编程实现让6位LED从左到右循环显示5。硬件连线:8255A的PA0PA5接LED的位选DS1DS6,PB0PB7接LED的段选adp。,.486PORTAEQU203HPORTBEQU207HPORTCEQU20BHCTRLEQU20FHCODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART:;初始化第4片8255AMOV DX,CTRLMOV AL,80HOUT DX,AL
18、,实验装置的接口电路,3.8段LED显示器,;段选口送5的字型码MOV DX,PORTBMOV AL,6DHOUT DX,ALNXTR:MOV BL,6MOV AL,01HNXTB:MOV DX,PORTAOUT DX,AL;送位选信号CALL DLYL;调用长延时子程序SHL AL,1DEC BLJNZ NXTBJZ NXTR,实验装置的接口电路,3.8段LED显示器,DLYLPROCPUSH ECXMOV ECX,04FFFFHDLYL_AGN:NOPLOOPDDLYL_AGNPOP ECXRETDLYLENDPCODE ENDSEND START,实验装置的接口电路,4.43小键盘,实验
19、装置的接口电路,4.43小键盘,实验装置的接口电路,4.43小键盘,小键盘电路说明:(1)键盘扫描时,给列信号,读回行信号(2)4位行信号放低半字节(D0,D1,D2,D3),3位列信号放D4,D5,D6,将D7固定为1,得到按键特征码,(3)若接上KEYCS0,则可以通过245读键盘行信号,此时不用接行信号线,口地址由KEYCS0的连接线决定(4)若接上KEYCS1,则可以通过273送键盘列信号,此时不用接列信号线,口地址由KEYCS1的连接线决定,实验装置的接口电路,4.43小键盘,用8255A芯片的A口与键盘行信号相连,B口与键盘列信号相连,编程扫描按键,如果按下K0键,就在8255(1
20、)所控制的三色LED上显示FF,否则显示00。硬件连线:第4片8255A的PA0PA3与键盘行信号P0P3相连,PB0PB2与键盘列信号Q0Q2相连。,实验装置的接口电路,4.43小键盘,.486;第4片8255A芯片的端口地址PORTAEQU 203HPORTBEQU 207HPORTCEQU 20BHCTRLEQU 20FHK0EQU 0EEH;K0键的键特征值CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART:;初始化8255AMOV DX,CTRLMOV AL,90HOUT DX,ALKSCAN:MOV BL,0FBH;从Q2列开始扫描NXTC
21、OL:MOV AL,BLMOV DX,PORTB,实验装置的接口电路,4.43小键盘,OUT DX,AL;送出列信号MOV DX,PORTAIN AL,DX;读入行信号AND AL,0FHCMP AL,0FHJNZ FNDKEY;不全为1即有键按下,跳转ROR BL,1;调整列信号JC NXTCOL JMP KSCAN;4列均无键按下,重新扫描FNDKEY:;以行信号低4位,列信号为高4位形成键特征值SHL BL,4 OR BL,ALCALL DLYSKEYUP:;等待按键松开MOV AL,0MOV DX,PORTBOUT DX,AL,MOV DX,PORTAIN AL,DXAND AL,0F
22、HCMP AL,0FHJNZ KEYUPCMP BL,K0JZ DSP_FFDSP_00:MOV AX,00;调用12中断显示00MOV CH,0INT 12JMP KSCANDSP_FF:MOV AX,FF;调用12中断显示FFMOV CH,0INT 12JMP KSCANDLYSPROCPUSH CXMOV CX,0FFHDLYS_AGN:NOPLOOP DLYS_AGNPOP CXRETDLYSENDPCODE ENDSEND START,实验装置的接口电路,4.43小键盘,习题:在LED1上显示按下的按键 硬件连线:第4片8255A的PA0PA5与LED位信号DS1DS6相连,;第4片
23、8255A的PB0PB7接LED段信号。;键盘列接第4片8255A的PC4PC6,;键盘行接第4片8255A的PC0PC3;8255方式控制字:10000001B 81H,实验装置的接口电路,4.43小键盘,.486;第4片8255A芯片的端口地址PORTA EQU 203H;LED位信号PORTB EQU 207H;LED段信号PORTC EQU 20BH;低四位键盘行/4、5、6位键盘列CTRL EQU 20FH;控制口data segment AT 0200 USE16 DISPTAB DB 12 dup(?)KEYTAB DB 12 dup(?)data ends,实验装置的接口电路,
24、4.43小键盘,CODE 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 MOVSB,实验装置的接口电路,4.43小键盘,MOV AX,DATA MOV DS,AXMOV DX,CTRLMOV AL,81HOUT DX,ALKSCAN:MOV BL,0BBH;从Q2列开始扫描10111011低位的0为标记NXTCOL:MOV AL,BLMOV DX,PORTCOUT DX,
25、AL;送出列信号IN AL,DX;读入行信号AND AL,0FHCMP AL,0FHJNZ FNDKEY;不全为1即有键按下,跳转,实验装置的接口电路,4.43小键盘,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 KEYUP,实验装置的接口电路,4.43小键盘,LEA SI,KEYTAB;
26、得到特征码表首地址 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 KSCAN,实验装置的接口电路,4.43小键盘,DLYSPROCPUSH CXMOV CX,0FFHDLYS_AGN:NOPLOOP DLYS_AGNPOP CXRETDLYSENDPDISP DB 3fh,6h,5bh,4fh
27、,66h,6dh,7dh,7h,7fh,6fh,77h,7chKEY DB 0eeh,0edh,0ebh,0e7h,0deh,0ddh,0dbh DB 0d7h,0beh,0bdh,0bbh,0b7hCODE ENDSEND START,实验装置的接口电路,5.8259A中断模块,实验装置的接口电路,5.8259A中断模块,实验装置的接口电路,5.8259A中断模块,说明:(1)有两个芯片,可以配置成级连(2)需要连接的线有:CS、SP/EN、INT和IRQ0IRQ7(3)8259的A0接CPU的A3,结合CS连线决定地址.如:CS-1接译码输出CS2,则口地址为:320H(偶地址),328H
28、(奇地址)(4)INTR为CPU的中断请求输入,应和INT0或INT1连接,实验装置的接口电路,5.8259A中断模块,8259A编写程序过程:中断初始化程序(1)根据需要写ICW1ICW4(2)填中断向量(3)开8259的IMR(4)开CPU的IF一般是循环程序中断服务程序实现中断服务程序的相应功能在中断程序返回前写EOI,实验装置的接口电路,5.8259A中断模块,编程使8255A的C口控制的小灯每隔1秒从左到右依次点亮,要求用8254完成1秒定时。硬件连线8255A的PC0PC7与发光二极管D1D8相连。8254的CS接译码模块的CS1,CLK1接频率为47KHz的时钟信号,GATE1接
29、+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。,实验装置的接口电路,5.8259A中断模块,各芯片初始化情况:8254:计数器1设置为方式0,计数初值为47000,完成1秒定时。8255:C口设置为方式0,输出。8259:ICW1(偶地址)设定为上升沿触发,单片,写IC
30、W4,即00010011B;ICW2(奇地址)设定中断类型号为40H47H,即01000000B;ICW3(奇地址)不写;ICW4(奇地址)设定为全嵌套,一般结束方式,8086以上,即00000001B。写OCW1,开放IRQ0中断,并且填写中断向量,中断类型号40H。,实验装置的接口电路,5.8259A中断模块,.486CTRL_8254EQU30CH;8254控制端口CUNT0EQU300H;8254计数器0CUNT1EQU304H;8254计数器1CTRL_8255EQU20FH;8255A(4)控制端口PORTCEQU20BH;8255A(4)C口地址ADDR0EQU320H;8259
31、偶地址ADDR1EQU328H;8259奇地址INTQEQU40H;中断类型号CODE SEGMENT USE16ASSUME CS:CODEORG 2000HSTART:;初始化8254MOV DX,CTRL_8254MOV AL,01110000BOUT DX,AL,实验装置的接口电路,5.8259A中断模块,MOV 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,A
32、L,实验装置的接口电路,5.8259A中断模块,;初始化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,实验装置的接口电路,5.8259A中断模块,;装填中断向量CLIMOV AX,0MOV DS,AXLEA AX,INTP1SMOV DS:INTQ*4,AXMOV AX,SEG INTP1
33、SMOV DS:INTQ*4+2,AXSTIWT:NOPJMP WT,实验装置的接口电路,5.8259A中断模块,;中断服务子程序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,例.参见电路图,要求每按一次按键K,则在CRT上显示大写字母A。(设8259A端口地址为20H、21H,
34、IRQ0IRQ7中断类型号为08H0F)要求:1写出8255A各端口地址 28255A的工作方式控制字 3.写相应源程序,A9 A8 A7 A6 A5 A4 A3 A2 A1 A00 1 1 0 0 0 1 1 0 018Ch 0 1 18Dh 1 018Eh 1 118Fh8255A方式控制字1 010 0 00 0 A0h显示程序段MOV DL,AMOV AH,2INT 21H,CODE SEGMENTMAIN PROC FARASSUME CS:CODESTART:PUSH DSMOV AX,0PUSH AX MOV DX,18fH;写方式控制字MOV AL,0A0H;OUT DX,AL
35、MOV AL,0dH;0 000 110 1OUT DX,AL;PC6置1,A口方式1输出中断允许,MOV AX,0MOV ES,AXMOV DI,0BH*4;IR3LEA AX,INTPROCMOV ES:DI,AXMOV AX,SEG INTPROCMOV ES:DI+2,AXIN AL,21HAND AL,0F7H;11110111,IR3允许OUT 21H,ALSTILP:HLTJMP LPRETMAIN ENDP,INTPROC PROC FARMOV DL,AMOV AH,2INT 21H MOV DX,18cH OUT DX,AL;AL无实际意义MOV AL,20HOUT 20H,ALIRETINTPROCENDPCODE ENDSEND START,