《2022年接口技术计算器设计方案书课程设计方案书 .docx》由会员分享,可在线阅读,更多相关《2022年接口技术计算器设计方案书课程设计方案书 .docx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 目 录一、引名师归纳总结 言 4 要第 1 页,共 24 页二、实验题目及求 5 电三、硬件路 5 模2.1、键盘输入块 5 片2.2、可编程并行通信接口芯8255A 6 9 2.3 、可编程定时器 / 计数器 四、源程序 10 体六、课程设计- - - - - - -精选学习资料 - - - - - - - - - 会 25 七、参考26 文献 引言本学期我们学习了微型运算机技术及应用这门应用性很强的课程,通过平常的上机试验,使我们初步明白了8086 系统的硬件结构以及部分芯片结构,为了进一步巩固和检测所学学问,我挑选基于 8086CPU的模
2、 拟运算器设计;要完成设计第一需要构建简洁的微型运算机应用系统,其次是确定组成各部件的芯片,然后画原理图,依据相应的原理以及实 现过程,编写出相应的汇编代码;再依据原理图连接硬件电路,电路连接完成后进行调试;设计过程中我们用到了8088CPU、可编程计时器名师归纳总结 - - - - - - -第 2 页,共 24 页精选学习资料 - - - - - - - - - 8253、可编程并行输入 / 输出芯片 8255A、74LS138、矩阵式键盘、六位七段 LED 数码管;我们的模拟运算器能实现 算;2 位十进制数以内的及减法运模拟运算器设计一、 概述设计题目及要求: 1. 通过小键盘做加减运算
3、;七段数码管显示器作输入数据和结果数据的显示; 2. 数字用小键盘 09,R,P,M,G作功能键 R开头运算(包括撤销运算),显示0 p+ m- g= E 退出返回 dos 3 运算次序:名师归纳总结 a.输入一原始数据显示器跟随显示第 3 页,共 24 页 b.按+或- 显示器内容不变- - - - - - -精选学习资料 - - - - - - - - - c.再输入一数据,显示器跟随显示;F(溢出) d.按=显示器显示结果数据,当超出能显示的最大值,显示 e. 按 R重新开头运算 f. 按 E,终止退出设计思路 :第一利用程序不断扫描键盘是不是有输入,假如没有就始终扫描,假如有就停止扫描
4、,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现 2 位十进制数以内的及减法运算;运算完成后将运算的结果储存并显示到 LED显示器上;二、 硬件电路设计硬件电路键盘输入及 LED数码管通过 8255A接口与系统总线连接,键盘的16 个按键组成 8*2 矩阵,其中 8 根矩阵线作为 8255A 的输出线与 PB7PB0连接, 2 根矩阵线作为 8255A 的输入线与 PC7、PC6连接;键盘采纳逐次扫描原理,16 个按键中 09 座位数字健, +、- 、=作为加、减和等号功能键,C为清零键;1、键盘输入模块键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,假如是独立按钮的话必需
5、要需要一个 I/O 口对它进行检测,而键盘往往这需要键盘按钮数一半的 I/O 口数对它进行检测,或许对一个比较简洁的系统 I/O 口数一般不是问题,但对于一个大型、复杂的系统来说 I/O 资源就显得特别宝贵了,尽量削减 I/O 使用是特别利于降低成本,另外一方面键盘比用独立按键要美观;我们设计时使用的是 8*2 行列式键盘,如图 2-1 所示;图中有 8 行 2 列, 8 根行线与 PA口相连, 2 根列线与 PC口的 PC6、PC7相连; PA、PB 口要么全部输入或输出;PC 口可以进行输入和输出;按键设置在行、类交点处(数字或字符为其键号),行、列线分别连接到按键开关的两端;当列线通过上
6、拉电阻接 +5V 时,就被钳位在高电平状态;键盘中有无按键按下是由行线送入全扫描字、列线读名师归纳总结 入行线状态来判定;这就是:给航线全部I/O线均置成低电平,然后读入列线电平状1;第 4 页,共 24 页态;如国有按键盘下,总会有一根列线电平被拉至低电平,从而使列线输入不全为- - - - - - -精选学习资料 - - - - - - - - - 图 2-1 键盘电路 图 2-2 数码管电路2、可编程并行通信接口芯片8255A (1)并行输入 /输出端口 A,B,C 8255A 内部包括三个8 位的输入输出端口,分别是端口A、端口 B、端口 C,相应信号线是 PA7PA0、PB7PB0、
7、PC7PC0;端口都是 口 A 和端口 B 定义为输入 /输出的数据端口,而端口 口 A 和端口 B 的状态和掌握信息的传送端口;(2)A 组和 B 组掌握部件8 位,都可以作为输入或输出;通常将端 C 就既可以作数据端口,又可以作为端端口 A 和端口 C 的高 4 位( PC7PC4)构成 A 组;由 A 组控制部件实现掌握功能;端口B 和端口 C 的低 4 位( PC3PC0)构成 B 组;由 B 组掌握部件实现掌握功能;A 组和 B 组利用各自的掌握单元来接收读写掌握部件的命令和 CPU 通过数据总线(D0D7)送来的掌握字,并依据他们来定义各个端口的操作方式;(3)数据总线缓冲储备器三
8、态双向8 位缓冲器,是8255A 与 8086CPU 之间的数据接口;与I/O 操作有关的数据、掌握字和状态信息都是通过该缓冲器进行传送;4读 /写掌握部件 8255A 完成读 /写掌握功能的部件;能接收 CPU 的掌握命令,并依据掌握命令向各个功能部件发出操作指令;图 2-3.8255A 芯片图名师归纳总结 CS 片选信号:由CPU 输入,有效时表示该8255A 被选中;RD, WR 读、写掌握信号:由第 5 页,共 24 页- - - - - - -精选学习资料 - - - - - - - - - CPU 输入; RD 有效表示CPU 读 8255A ,WR 有效表示CPU 写 8255A
9、 ;RESET 复位信号:由 CPU 输入; RESET 信号有效,清除 输入方式;定义工作方式掌握字:8255A 中全部掌握字寄存器内容,并将各个端口置成图 2-4 .8255A 内部结构工作方式 0:8255A 中各端口的基本输入 /输出方式;图 2-5 .8255A 工作方式掌握名师归纳总结 - - - - - - -第 6 页,共 24 页精选学习资料 - - - - - - - - - 3、可编程计数器 / 定时器 8253 具有 3 个独立的计数通道,采纳减1 计数方式;在门控信号有效时,每输入 1 个计数脉冲,通道作 1 次计数操作;当计数脉冲是已知周期的时钟信号时,计数就成为定
10、时;(1)、 8253 内部结构8253 芯片有 24 条引脚,封装在双列直插式陶瓷管壳内;1. 数据总线缓冲器数据总线缓冲器与系统总线连接,8 位双向,与 CPU交换信息的通道;这是8253 与 CPU之间的数据接口,它由8 位双向三态缓冲寄存器构成,是CPU与 8253之间交换信息的必经之路;2. 读写掌握名师归纳总结 读写掌握分别连接系统的IOR 和 IOW,D18253 2+5第 7 页,共 24 页由 CPU掌握着拜访 8253 的内部通道;接收CPUD6 24 WR送入的读写掌握信号,并完成对芯片内部D5 3R3D4 各功能部件的掌握功能,因此,它实际上是42CS AD3 8253
11、 芯片内部的掌握器;A1A0:端口挑选信51 D2 A61 0 D1 0 CKL号,由 CPU输入; 8253 内部有 3 个独立的通道79 1D0 GATE88 和一个掌握字寄存器,它们构成8253 芯片的CLK0 OUT97 OUT0 2 CLK14 个端口, CPU可对 3 个通道进行读写操作316 GET0 GATE05对掌握字寄存器进行写操作;这 4 个端口地GND 0UT141址由最低 2 位地址码 A1、 A0来挑选;23- - - - - - -精选学习资料 - - - - - - - - - 一、 源程序;386 以上微机适用;纯 dos 下才能使用;tasm4.1 或以上编
12、译;*;* LED *;*; io_plx_device_id equ 05406h ;TPC卡设备 ID io_plx_vendor_id equ 010b5h ;TPC卡厂商 ID IO_PLX_SUB_ID EQU 0905410B5H ;TPC卡子设备及厂商 ID TIM_CTL EQU 203H-200H ;8253 端口地址 TIMER0 EQU 200H-200H TIMER1 EQU 201H-200H MODE03 EQU 36H ;8253 端口数据 MODE12 EQU 74H INTA00 EQU 20H INTA01 EQU 21H PORTSEG EQU 211H-
13、200H ;数码管端口地址 PORTBIT EQU 210H-200H pa55 equ 218h-200H ;8255 端口 pb55 equ 219h-200H p55ctl equ 21bh-200H data segment csreg dw . ipreg dw . io_9054base_address ;旧中断向量储存空间 db 4 DUP0 ;TPC卡 PCI 接口芯片 I/O 基地址暂存空间 io_base_address db 4 DUP0 ;TPC卡 I/O 基地址暂存空间not find or interrupt_line db 2 DUP0 ;TPC卡中断号暂存空间
14、pcicardnotfind db 0dh,0ah,TPC pci card address/interrupt error .,0dh,0ah,$ io9054baseaddress db 0dh,0ah,TPC pci card 9054 Chip I/O Base Address : ,$ iobaseaddress db 0dh,0ah,TPC pci card I/O Base Address : ,$ intnumber db 0dh,0ah,TPC pci card Interrupt Line : ,$ enter_return db 0dh,0ah,$ MESS DB 825
15、3A TIMER0 IN MODE3. COUNT=0200H,0AH,0DH DB 8253A TIMER1 IN MODE2. COUNT=0aH,0AH,0DH,$ irq_vect db 08h,09h,0ah,0bh,0ch,0dh,0eh,0fh,70h,71h,72h,73h,74h,75h,76h,77h ;新的中断向量 , 中断 0-7 的向量为 :08h-0fh, 中断 8-15 的向量 为:70h-77h 名师归纳总结 - - - - - - -第 8 页,共 24 页精选学习资料 - - - - - - - - - irq_mask_0_7_table db 01111
16、1110b,011111101b,011111011b,011110111b db 011101111b,011011111b,010111111b,001111111b db 011111011b,011111011b,011111011b,011111011b db 011111011b,011111011b,011111011b,011111011b ;新的中断掩码 , 中断 0-7 时从低至高相应位为零 , 中断 8-15 时 第 2 位为零 irq_mask_8_15_table db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 011111
17、110b,011111101b,011111011b,011110111b db 011101111b,011011111b,010111111b,001111111b ;新的中断掩码 , 中断 0-7 时全一 , 中断 8-15 时从低至高相应位 为零 INTMASK DB . LED DB 3FH,06,5BH,4FH,66H,6DH,7DH,07,7FH,6FH,40H DB 0AH,0DH,$ table1 dw 0101h,0102h,0104h,0108h,0110h,0120h,0140h,0180h dw 0201h,0202h,0204h,0208h,0210h,0220h,
18、0240h,0280h dw 0401h,0402h,0404h,0408h,0410h,0420h,0440h,0480h char db CDEFBA9845673210 RPMG mes db PLAY ANY KEY IN THE SMALL KEYBOARD. ,0ah,0dh db IT WILL BE ON THE SCREEN. END WITH R or ANY KEY,0ah,0dh,$ ;extra data num1 db 6 dup . num2 db 6 dup . result db 6 dup . count db 0 operator db 0 LedNum
19、db 6 dup . data ends stacks segment db 100 dup . STA DW 512 DUP . TOP EQU LENGTH STA stacks ends code segment assume cs:code,ds:data,ss:stacks,es:data start: ;Enable Local Interrupt Input .386 cli mov ax,data mov ds,ax mov es,ax 名师归纳总结 - - - - - - -第 9 页,共 24 页精选学习资料 - - - - - - - - - mov ax,stacks
20、mov ss,ax call findtpc ;查找 TPC卡资源并显示MOV DX,word ptr io_base_address ;初始化 8253 add dx,TIM_CTL MOV AL,MODE03 OUT DX,AL MOV DX,word ptr io_base_address add dx,TIMER0 MOV AL,00h OUT DX,AL MOV AL,02H OUT DX,AL MOV DX,word ptr io_base_address add dx,TIM_CTL MOV AL,MODE12 OUT DX,AL MOV DX,word ptr io_base_
21、address add dx,TIMER1 MOV AL,0aH OUT DX,AL MOV AL,00 OUT DX,AL MOV DX,OFFSET MESS MOV AH,09 INT 21H MOV DX,OFFSET MES ;显示提示MOV AH,09 INT 21H mov dx,word ptr io_9054base_address add dx,68h ;设置 tpc 卡中 9054 芯片 io 口, 使能中断 in ax,dx or ax,0900h out dx,ax mov bx,word ptr interrupt_line ;储存原中断向量mov al,byte
22、ptr irq_vect+bx mov ah,35h int 21h mov ax,es mov csreg,ax 名师归纳总结 - - - - - - -第 10 页,共 24 页精选学习资料 - - - - - - - - - mov ipreg,bx mov bx,word ptr interrupt_line ;设置新中断向量 mov al,byte ptr irq_vect+bx mov cx,cs mov ds,cx mov dx,offset int_proc mov ah,25h int 21h mov ax,data mov ds,ax mov es,ax in al, 21
23、h ;设置中断掩码 mov bx,word ptr interrupt_line mov ah,byte ptr irq_mask_0_7_table+bx and al,ah out 21h, al in al, 0a1h mov bx,word ptr interrupt_line mov ah,byte ptr irq_mask_8_15_table+bx and al,ah out 0a1h, al sti ;开中断 Reset: ;initialization LEA BX,num1 CALL ClearNum LEA BX,num2 CALL ClearNum MOV byte p
24、tr count,0 LEA BX,num1 CALL LedShow FirstRead: LEA BX,num1 CALL ReadNum CMP byte ptr operator,4 JZ Reset CMP byte ptr operator,5 JZ FunExit LoopRead: 名师归纳总结 - - - - - - -第 11 页,共 24 页精选学习资料 - - - - - - - - - MOV DL,operator LEA BX,num2 CALL ReadNum CMP byte ptr operator,4 JZ Reset CMP byte ptr opera
25、tor,5 JZ FunExit CMP DL,1 JZ FunAdd CMP DL,2 JZ FunMinus MidJmp2: JMP FirstRead MidJmp3: JMP Reset ;several choice for the prior operator FunAdd: CALL AddNum LEA BX,num1 JMP Ope2 FunMinus: CALL MinusNum LEA BX,num1 Ope2: CALL LedShow LEA BX,num2 CALL ClearNum LEA BX,num1 CALL ClearNum JMP FirstRead
26、FunEqual: JMP Reset FunClear: JMP Reset FunExit: JMP Exit ErrorOut: ;output the error message MOV word ptr num1,0A0AH 名师归纳总结 - - - - - - -第 12 页,共 24 页精选学习资料 - - - - - - - - - MOV word ptr num1+2,0A0AH MOV word ptr num1+4,0A0AH LEA BX,num1 call LedShow ErrorGet: ;reset the error status ;only R and E
27、 can pass CALL key CMP DL,E JZ FunExit CMP DL,R JZ MidJmp3 JMP ErrorGet Judge: CMP byte ptr operator,3 JZ MidJmp2 Exit: cli mov bx,word ptr interrupt_line ;复原中断掩码 mov ah,byte ptr irq_mask_0_7_table+bx not ah in al, 21h or al, ah out 21h, al mov bx,word ptr interrupt_line mov ah,byte ptr irq_mask_8_1
28、5_table+bx not ah in al, 0a1h or al, ah out 0a1h, al mov bx,word ptr interrupt_line ;复原原中断向量 mov al,byte ptr irq_vect+bx mov dx,ipreg mov cx,csreg mov ds,cx mov ah,25h int 21h mov ax,data ;设置 tpc mov ds,ax 卡中 9054 芯片 io 口, 关闭中断mov dx,word ptr io_9054base_address 名师归纳总结 - - - - - - -第 13 页,共 24 页精选学习
29、资料 - - - - - - - - - add dx,68h in ax,dx and ax,0f7ffh out dx,ax mov ax,4c00h int 21h ;退出ReadNum proc ;if you want to use this procedure ;you must provide the number address to BX PUSH AX PUSH CX PUSH DX Readin: ;enter the first number PUSH BX call key POP BX MOV AL,DL ;operator symbol ;plus ;get a
30、char in dl and display it MOV byte ptr operator,1 CMP AL,P JZ ExitRead ;minus MOV byte ptr operator,2 CMP AL,M JZ ExitRead ;equal MOV byte ptr operator,3 CMP AL,G JZ ExitRead ;clear MOV byte ptr operator,4 CMP AL,R JZ ExitRead ;exit MOV byte ptr operator,5 CMP AL,E JZ ExitRead ;illegal symbol 名师归纳总结
31、 - - - - - - -第 14 页,共 24 页精选学习资料 - - - - - - - - - CMP AL,0 JB Readin CMP AL,9 JA Readin ;number CMP byte ptr count,6 JZ Readin LeftMove: ;mov the number MOV CX,5 MOV SI,0 MoveData: MOV DL,BX+SI+1 MOV BX+SI,DL INC SI LOOP MoveData ;insert the number AND AL,0FH MOV BX+5,AL call LedShow INC count JMP
32、 Readin ExitRead: MOV count,0 POP DX POP CX POP AX ret ReadNum endp MidJmp: JMP ErrorOut AddNum proc ;add num1 and num2 MOV CX,6 LEA BX,num1 DEC BX AND CX,CX AddLoop: MOV SI,CX 名师归纳总结 - - - - - - -第 15 页,共 24 页精选学习资料 - - - - - - - - - MOV AL,BX+SI ADC AL,BX+SI+6 AAA MOV BXSI,AL LOOP AddLoop JC MidJm
33、p ret AddNum endp MinusNum proc ;minus num1 and num2 MOV CX,6 LEA BX,num1 DEC BX AND CX,CX MinusLoop: MOV SI,CX MOV AL,BX+SI SBB AL,BX+SI+6 AAS MOV BXSI,AL LOOP MinusLoop JC MidJmp ret MinusNum endp LedShow proc ;simulate LED show ;provide the number address to BX ;clear LED segment PUSH BX LEA BX,L
34、edNum ADD BX,2 CALL ClearNum POP BX ;Move the data to LED segment LEA DI,LedNum MOV CX,6 MOV SI,0 ShowLoop: MOV AL,BX+SI PUSH DI ADD DI,SI MOV DI,AL 名师归纳总结 - - - - - - -第 16 页,共 24 页精选学习资料 - - - - - - - - - POP DI INC SI LOOP ShowLoop ret LedShow endp ClearNum proc ;clear the number ;provide number
35、address to BX MOV CX,6 DEC BX ClearZero: MOV SI,CX MOV byte ptr BX+SI,0 LOOP ClearZero ret ClearNum endp key proc near kst: mov al,82h MOV DX,word ptr io_base_address add dx,p55ctl out dx,al ;set command word of 8255a ;porta for output,portb for input wait1: next: mov al,00 MOV DX,word ptr io_base_a
36、ddress add dx,pa55 out dx,al ;porta output 00 MOV DX,word ptr io_base_address add dx,pb55 in al,dx ;get col data cmp al,0ffh jz wait1 ;no key is closed ,wait push ax ;save the col data push ax call delay MOV DX,word ptr io_base_address add dx,p55ctl 名师归纳总结 mov al,90h ;set command word of 8255a 第 17
37、页,共 24 页- - - - - - -精选学习资料 - - - - - - - - - out dx,al ;porta for input,portb for output MOV DX,word ptr io_base_address add dx,pb55 pop ax out dx,al ;output col data from portb MOV DX,word ptr io_base_address add dx,pa55 in al,dx ;al is row data pop bx mov ah,bl ;ah is col data not ax mov si,offse
38、t table1 mov di,offset char mov cx,24 tt: cmp ax,si jz nn dec cx ;cmp col,row with every word ;in the table jz kst add si,2 inc di jmp tt nn: mov dl,di mov ah,02 int 21h push dx mov al,82h MOV DX,word ptr io_base_address add dx,p55ctl out dx,al ;set command word of 8255a ;porta for output,portb for input wait2: mov al,00 MOV DX,word ptr io_base_address add dx,pa55 out dx,al ;porta output 00 MOV DX,word ptr io_base_address add dx,pb55 in al,dx ;get col data cmp al,0ffh jnz wait2 ;wait until the key is up pop dx ret 名