770 likes | 900 Views
实验开发与调试环境. 1. 硬件环境. 实验开发与调试环境. 2. 软件环境 :DeChangTS 集成环境. 实验开发与调试环境. 2. 软件环境 :DeChangTS 集成环境. 实验开发与调试环境. 主机系统有 32K 的 RAM 空间,地址为 0000 : 0000H ~ 0000 : 7FFFH ,分配情况如下 :. 3. 实验环境的内存资源与分配. 实验开发与调试环境. .486 DATA SEGMENT AT 0200H USE16 ; 此处定义变量 DATA ENDS
E N D
实验开发与调试环境 1. 硬件环境
实验开发与调试环境 2. 软件环境:DeChangTS集成环境
实验开发与调试环境 2. 软件环境:DeChangTS集成环境
实验开发与调试环境 主机系统有32K的RAM空间,地址为0000:0000H~0000:7FFFH,分配情况如下: 3. 实验环境的内存资源与分配
实验开发与调试环境 .486 DATA SEGMENT AT 0200H USE16 ;此处定义变量 DATA ENDS SDATA SEGMENT AT 0300H USE16 STACK DB 500 DUP(?) SDATA ENDS CODE SEGMENT USE16 ASSUME CS: CODE, DS: DATA ORG 4000H BEG: MOV AX, SDATA MOV SS, AX MOV SP, 500 MOV AX, DATA MOV DS, AX ;此处添加用户代码 WT: JMP WT CODE ENDS END BEG 4. 程序模板
实验开发与调试环境 AT 伪指令说明段基址。如果不加说明,那么段基址由编译系统分配。 ORG 伪指令说明起始偏移地址。 STACK 伪指令说明堆栈段的开始。 USE16 伪指令引导汇编程序在80386 ~ Pentium Pro中使用16位指令模式及数据长度。 5. 注意事项
实验开发与调试环境 任何在实方式下运行的程序都必须包含USE16伪指令 代码段的段基址不能由用户设定,需要用ORG指定起始偏移地址。 DeChangeTS环境中,数据段中定义的变量,只会为变量分配存储单元,不会初始化变量。 如果程序没有定义堆栈段,那么复位后系统初始设置的堆栈位置为0000H:2000H。 程序最后一条指令一般为WT: JMP WT,使CPU在此循环等待 5. 注意事项
实验装置介绍 1. 实验装置实物
实验装置介绍 1. 实验装置实物
实验装置介绍 2. 实验装置上的译码输出
实验装置介绍 实模式下,第0、1、2、3、4、11、12中断都由实验装置的监控程序使用. 12中断为用户提供显示功能,可以在8位8段LED上显示字符和字符串,只能显示数字和部分字符。 3. 实验装置上的中断程序
实验装置介绍 ① 显示字符 格式为: MOV AX,‘AB’ MOV CH,0 INT 12 该功能最多只能显示两个字符,颜色固定为红色。也可只显示一个字符,AH的字符显示在左边,AL的字符在右边的LED上显示。 ②显示字符串 格式为: MOV AX, OFFSET STRING1 MOV CH, 1AH MOV CL, LENGTH STRING1 INT 12 可以显示一个字符串,字符数不大于8个,超出部分不显示。CH寄存器设置颜色,10H为黄色,15H为红色,1AH为绿色。CL寄存器说明待显示字符串的长度。 3. 实验装置上的中断程序
实验装置介绍 例:调用12中断显示红色的字符串“S0123456” .486 CODE SEGMENT USE16 ASSUME CS:CODE ORG 4000H START: 显示红色字符串'S0123456' LEA AX, STR1;说明字符串首地址 MOV CH, 15H ;设置颜色 MOV CL, 8 ;说明字符串长度 INT 12 WT: JMP WT STR1 DB ‘S0123456' CODE ENDS END START 3. 实验装置上的中断程序
实验装置介绍 3. 实验装置上的中断程序
实验装置的接口电路 1.定时器/计数器8254模块
实验装置的接口电路 1.定时器/计数器8254模块
实验装置的接口电路 定时器/计数器8254接口电路 1.定时器/计数器8254模块
实验装置的接口电路 定时器/计数器8254地址和片选决定口地址 1.定时器/计数器8254模块
实验装置的接口电路 • 编程使8254计数器2产生周期为1秒的方波,并将计数器的输出与小灯相连接,观察小灯的变化情况。 • 硬件连线:8254模块中的CS接译码模块的CS1,GATE2接+5V,CLK2接47KHz的时钟信号,OUT2接小灯D1。 • 8254芯片的端口地址分配:计数器0为300H,计数器1为304H,计数器2为308H,控制端口为30CH。 1.定时器/计数器8254模块
实验装置的接口电路 .486 CODE SEGMENT USE16 ASSUME CS:CODE ORG 4000H START: ;向控制端口30CH写入方式控制字,初始化计数器2 MOV DX, 30CH MOV AL, 10110110B OUT DX, AL ;向计数器2端口308H写入计数初值 MOV DX, 308H MOV AX, 47000 OUT DX, AL ;先写低字节 MOV AL, AH OUT DX, AL ;后写高字节 WT: JMP WT CODE ENDS END START 1.定时器/计数器8254模块
实验装置的接口电路 习题2 计数器1工作于方式1,观察用GATE的正脉冲触发计数。 硬件连线:8254模块中的CS接译码模块的CS1,GATE1接键正脉冲输出,CLK1接47KHz的时钟信号,OUT1接指示灯D1。 8254芯片的端口地址分配:计数器0为300H,计数器1为304H,计数器2为308H,控制端口为30CH。 每按一次键,灯亮1S钟。 1.定时器/计数器8254模块
实验装置的接口电路 .486 CODE SEGMENT USE16 ASSUME CS:CODE ORG 4000H START: ;向控制端口30CH写入方式控制字,初始化计数器0 MOV DX, 30CH MOV AL, 01110010B OUT DX, AL ;向计数器1端口304H写入计数初值 MOV DX, 304H MOV AX, 47000 OUT DX, AL ;写初值 MOV AL,AH OUT DX,AL WT: JMP WT CODE ENDS END START 1.定时器/计数器8254模块
实验装置的接口电路 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口地址固定: 2.并行接口模块8255A
实验装置的接口电路 编程实现使由4片8255A控制的8位LED从左到右显示红色的“3C2D1E0F”。 程序一次输出32位数据,当DX=20CH时,OUT DX, EAX指令将EAX中的数据送给4个端口地址:20CH~20FH。 2.并行接口模块8255A
实验装置的接口电路 .486 CODE SEGMENT USE16 ASSUME CS:CODE ORG 4000H START: ;初始化4片8255A ;20CH-20FH为4片8255A芯片的控制端口 MOV DX, 20CH MOV EAX,80808080H OUT DX, EAX ;200H-203H是4片8255A芯片A口的端口地址 ;使4位LED显示’3210’ MOV DX, 200H MOV EAX, 0C0F9A4B0H OUT DX, EAX 2.并行接口模块8255A
实验装置的接口电路 ;204H-207H为4片8255A芯片B口的端口地址 ;控制4位LED显示’CDEF’ MOV DX, 204H MOV EAX, 8E86A1C6H OUT DX, EAX ;208H-20BH为4片8255A芯片C口的端口地址 ;将8位LED的颜色设置为红色 MOV DX, 208H MOV EAX, 05050505H OUT DX, EAX WT: JMP WT CODE ENDS END START 2.并行接口模块8255A
实验装置的接口电路 习题2:利用8个开关K1~K8控制8个发光二极管D1~D8的状态。要求:当只有开关K1扳向前时,发光二极管从右到做逐个循环点亮;当只有开关K1、K2扳向前时,发光二极管从右到左成对逐次循环点亮;当只有开关K1、K2和K3扳向前时,发光二极管从右到左3个为一组逐次循环点亮;以此类推,当全部开关都扳向前时,8个发光二极管全亮;当开关状态不满上述情况时,发光二极管全部熄灭。任何时候扳动开关,二极管状态随之改变。通过8255A芯片的B口读入开关状态,C口控制发光二极管。 2.并行接口模块8255A
实验装置的接口电路 硬件连接:8255B口接开关,C口接发光二极管 ;口地址 203 207 20b 20f ;控制字:10000010B 82h 2.并行接口模块8255A .486 code segment use16 assume cs:code org 4000h beg: mov dx,20fh mov al,82h out dx,al ;8255A初始化,C口输入,A,B口输出
实验装置的接口电路 mov bl,0 ;存原来的开关状态 mov bh,0ffh l2: mov dx,207h in al,dx ;从C口读入开关状态 cmp al,bl jZ l3 ;开关状态没发生变化 mov bl,al cmp al,01h jz l1 cmp al,03h jz l1 ;K1、K2为’1’转显示处理 cmp al,07h jz l1 ;K1、K2、K3为’1’转显示处理 cmp al,0fh jz l1 ;K1、K2、K3、K4为’1’转显示处理 2.并行接口模块8255A
实验装置的接口电路 cmp al,1fh jz l1 ;K1、K2、K3、K4、K5为’1’转显示处理 cmp al,3fh jz l1 ;K1、K2、K3、K4、K5、K6为’1’转显示处理 cmp al,7fh jz l1 ;K1、K2、K3、K4、K5、K6、K7为’1’转显示处理 ;非7种规定状态,转重新读入开关状态 cmp al,0ffh jz l1 mov al,00h l1: not al mov bh,al 2.并行接口模块8255A
实验装置的接口电路 l3: mov ecx,01ffffh l0: loopd l0 ;延时 mov al,bh mov dx,20Bh out dx,al rol al,1 ;循环左移一位 mov bh,al ;保存此时的状态 jmp l2 code ends end beg 2.并行接口模块8255A
实验装置的接口电路 编程实现让第1片8255A所控制的两个三色LED显 示红色的“58”。硬件连接不需要 2.并行接口模块8255A .486 CODE SEGMENT USE16 ASSUME CS:CODE ORG 4000H START: ;初始化第一片8255A ;20CH为第一片8255A芯片的控制端口 MOV DX, 20CH MOV AL,80H OUT DX, AL ;200H是8255A芯片A口的端口地址 MOV DX, 200H MOV AL, 92H;5
实验装置的接口电路 编程实现让第1片8255A所控制的两个三色LED显 示红色的“58”。硬件连接不需要 2.并行接口模块8255A OUT DX, AL ;204H为8255A芯片B口的端口地址 MOV DX, 204H MOV AL, 80H;8 OUT DX, AL ;208H为8255A芯片C口的端口地址 ;将8位LED的颜色设置为红色 MOV DX, 208H MOV AL, 05H OUT DX, AL WT: JMP WT CODE ENDS END START
实验装置的接口电路 3. 8段LED显示器 采用共阴极段码
实验装置的接口电路 3. 8段LED显示器 注意: 由于段信号接有锁存器,可以通过锁存器传送段信号,此时就不需要接段信号线,但要接KEYCS2选通线,并由此确定口地址 位信号高电平选通
实验装置的接口电路 用8255A芯片的A口控制6位共阴极LED的位选,B口控制段选,编程实现让6位LED从左到右循环显示‘5’。 硬件连线:8255A的PA0~PA5接LED的位选DS1~DS6,PB0~PB7接LED的段选a~dp。 3. 8段LED显示器 .486 PORTA EQU 203H PORTB EQU 207H PORTC EQU 20BH CTRL EQU 20FH CODE SEGMENT USE16 ASSUME CS:CODE ORG 4000H START: ;初始化第4片8255A MOV DX, CTRL MOV AL, 80H OUT DX, AL
实验装置的接口电路 ;段选口送’5’的字型码 MOV DX, PORTB MOV AL, 6DH OUT DX, AL NXTR: MOV BL, 6 MOV AL, 01H NXTB: MOV DX, PORTA OUT DX, AL ;送位选信号 CALL DLYL ;调用长延时子程序 SHL AL, 1 DEC BL JNZ NXTB JZ NXTR 3. 8段LED显示器
实验装置的接口电路 DLYL PROC PUSH ECX MOV ECX, 04FFFFH DLYL_AGN: NOP LOOPD DLYL_AGN POP ECX RET DLYL ENDP CODE ENDS END START 3. 8段LED显示器
实验装置的接口电路 4. 4×3小键盘
实验装置的接口电路 4. 4×3小键盘
实验装置的接口电路 小键盘电路说明: (1)键盘扫描时,给列信号,读回行信号 (2)4位行信号放低半字节(D0,D1,D2,D3),3位列信号放D4,D5,D6,将D7固定为1,得到按键特征码 4. 4×3小键盘 (3)若接上KEYCS0,则可以通过245读键盘行信号,此时不用接行信号线,口地址由KEYCS0的连接线决定 (4)若接上KEYCS1,则可以通过273送键盘列信号,此时不用接列信号线,口地址由KEYCS1的连接线决定
实验装置的接口电路 用8255A芯片的A口与键盘行信号相连,B口与键盘列信号相连,编程扫描按键,如果按下K0键,就在8255(1)所控制的三色LED上显示‘FF’,否则显示‘00’。 硬件连线:第4片8255A的PA0~PA3与键盘行信号P0~P3相连,PB0~PB2与键盘列信号Q0~Q2相连。 4. 4×3小键盘