版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理实验课西北工业大学计算机学院实验教学中心MASM 611使用简要说明 Microsoft宏汇编程序MASM611有建立汇编语言所需的全部工具,我们简要介绍其集成开发软件PWB。PWB是集汇编程序的编辑、编译、连接、调试、运行于一体的综合软件。 运行 PWB 在计算机 C:盘上具体使用方法结合实例介绍 MASM611文件夹BINR文件夹运行程序PWB软件实验局部 本局部共进行4次实验,实验内容如下: 1实验一 BCD码的运算 2实验三 循环结构程序 3实验四 排序程序 4实验五 分支程序 实验一 BCD码的运算 一实验目的 1.熟悉在MASM611集成环境下建立、汇编、链接、调试和运行汇
2、编语言程序的全过程。 2.掌握汇编语言程序结构中数据段、堆栈段、代码段定义及内存分配方法。 3.学会DEBUG调试程序主要命令的使用方法。 4.掌握用组合BCD码表示数据的方法,并熟悉其加、减、乘、除运算。二实验内容 1.多位十进制数加法。 2.两位十进制数乘法。三实验要求 1.多位十进制数加法:在内存中以DATA1和DATA2为首址,各分配5个字节单元,分别存入两个8位组合BCD码数据低位在前,将两数相加,结果送回到DATA2处。 2.两位十进制数乘法:将被乘数和乘数以组合BCD码形式分别存放于DATA1和DATA2定义的节单元中,经乘法运算,乘积存入DATA3定义的两个内存单元中。 3.用
3、DEBUG调试程序、查看运算结果,进行手工验证;并且用DEBUG修改数据,重新执行。关于BCD码、十六进制数的说明BCD码用4位二进制编码表示一个十进制数,又称二十进制数。由于这4位二进制数的权值为8421,故也称BCD码为8421码。在计算机里,用一个字节的低4位表示一位十进制数非组合BCD码;用一个字节表示两位十进制数组合BCD码。非组合BCD码uuuu 1001例:计算机里 79d 非组合BCD码:uuuu0111 uuuu1001组合BCD码0111 1001例:计算机里 79d 组合BCD码:0111100116进制数0123456789ABCDEF二进制码0000000100100
4、011010001010110011110001001101010111100110111101111BCD码000000010010001101000101011001111000100110进制数0123456789在计算机里,所有的运算都是按二进制进行的,运算结果是二进制数即十六进制数 。为了把十六进制运算结果转换成十进制,汇编语言中引进了组合BCD码加法调整指令DAA和减法调整指令DAS。 DAA 加法的十进制调整指令 该指令之前要执行ADD或ADC。调整方法:假设AF为1,或AL中的低4位是十六进制的A F,那么AL内容加06H,AF置1; 假设CF为1,或AL中的高4位是十六进制的
5、A F,那么AL内容加60H,CF置1。 AF 辅助进位标志 CF进位标志AL AL中的十六进制数调整为BCD格式多位十进制数加法 .model small .data data1 db 11h,22h,33h,44h,00h data2 db 99h,88h,77h,66h,00h .code .startup mov si,offset data1 ;设指针 mov di,offset data2 clc ;清进位 mov cx,5 ;设加法次数lop: mov al,si ;取第一加数 adc al,di ;取第二加数 daa ;十进制调整 mov di,al ;结果存入指定单元 inc
6、 si ;指针加1 inc diloop lop ;循环 .exit end 流程图:开始SI Data1首址DI Data2首址清进位设加法次数十进制调整; 局部和回送指向下单元数AL 第一加数AL AL+第二加数CX-1=0?结束YN两位十进制数乘法.model small.586.datadata1 db 34hdata2 db 56hdata3 dw 1 dup (?).code.startup mov bl,data1 ;第一乘数转换成16进制数 mov bh,bl and bh,0fh and bl,0f0h mov cL,4 shr bl,cL mov al,10 mul bl
7、add al,bh movzx cx, al ;置加法次数计数器 mov bl,data2 ; 第二乘数做BCD 加法,加第一乘数次 mov ax,0 clclop: add al,bl daa xchg ah,al adc al,0 daa xchg ah,al loop lop mov data3,ax;积送乘积存储单元 nop nop nop .exit end两位十进制数乘法流程图:开始BL 第一乘数BH 第一乘数别离出第一乘数的“个位别离出第一乘数的“十位第一乘数的“十位移到“个位后,再乘 10合成得到16进制的第一乘数CX 16进制的第一乘数BCD码转换成16进制数11AX 0清进
8、位BL 第二乘数第二乘数做加法次数十进制调整AL与AH内容交换AL AL+0+CFAL AL+BLAL与AH内容交换十进制调整CX-1=0?NY存储结果结束一、实验目的 掌握循环结构程序的设计、调试。二、实验内容1 多字节无符号数加法。2 设计一软件延时器,并在屏幕上显示软件延时倒计时过程。三、实验要求1多字节无符号加法:在DATAS中存放10个双字节无符号数, 用循环结构设计程序,通过程序运算,把这10个双字节无符号 数相加,其和存入紧邻加数之后的四个单元中。2软件延时器:做一延时约1秒的软件延时器,在屏幕上按9、 8、0顺序显示软件延时倒计时过程。 实验三 循环结构程序有关问题的说明循环程
9、序的三个组成局部: 循环初始状态设置。设置循环次数、为循环体正常工作建立初始状态等。 循环体。循环工作的主体,包含循环的工作局部和修改局部。循环的工作局部是为完成程序功能而设计的程序段;循环的修改局部是为保证每一次重复时,参加执行的信息能发生有规律的变化而建立的程序段。 循环控制局部。选择一个循环控制条件来控制循环的运行和结束。循环程序的结构:循环初始状态循环控制条件循环体YN循环初始状态循环体循环控制条件YNDO-WHILE结构DO-UNTIL结构子程序结构: procedure name PROC Attribute RET procedure name ENDP Attribute NE
10、AR 调用程序和过程在同一个代码段中FAR 调用程序和过程不在同一个代码段中系统功能调用:系统功能调用是DOS为方便汇编语言编写而提供的一组约80个功能调用的常用子程序,它分为设备管理、文件管理和目录管理等几类。DOS规定用软中断指令 INT 21H 进入各功能调用子程序的总入口,再为每个功能调用规定一个功能号,以便进入相应各用子程序的入口。系统功能调用的使用方法:指定的寄存器入口参数AH调用功能的功能号INT 21HEX1:从键盘输入单字符 MOV AH,01H ;1号功能调用 INT 21H将键盘输入字符的ASCII码送到 AL。EX2:从键盘输入字符串 BUF DB 10 DUP? LE
11、A DX,BUF MOV AH,0AH ;0A号功能调用 INT 21H将键盘输入的字符串写到 RAM 中去,击回车键表示字符串结束。字符数与予留空间的关系为:少补零多丧失。EX3:输出单字符 MOV DL,M MOV AH,02H; 2号功能调用 INT 21H将 DL 中字符从屏幕上显示出来。EX4:输出字符串 BUF DB Thank you MOV DX,OFFSET BUF MOV AH,09H;9号功能调用 INT 21H将 指定 RAM 缓冲区中的字符串从屏幕上显示出来。 为字符串结束符。EX5:直接控制台输入/输出单字符 MOV DL,0FFH;DL=0FFH时, MOV AH
12、,06H; 6号功能调用 INT 21H; 将键盘输入字符 送到 AL 中。 MOV DL,M; DL 0FFH时, MOV AH,06H; 6号功能调用 INT 21H; 将 DL 中字符送到 屏幕上显示。多字节无符号数加法 .MODEL SMALL .586 .DATADATAS DW 1111H,2222H,3333H,4444H,5555H DW 6666H,7777H,8888H,9999H,0AAAAHRESULT DD 1 DUP(?) .CODE.STARTUP MOV SI,OFFSET DATAs;设指针 MOV CX,10;累加次数 MOV EAX,0;清累加器 CLC;
13、清进位LOP: MOV BX,SI;取加数到BX MOVZX EBX,BX ;将BX扩展成32位 ADC EAX,EBX;带进位加 INC SI;改指针 INC SI LOOP LOP;循环加 MOV RESULT,EAX;存结果 .EXIT END开始SI DATAS的首址CX 累加次数EAX 0清进位BX SI所指加数将BX扩展为32位EAX EAX+EBX+CFSI 指向下一加数CX-1=0?NY存结果 结束软件延时器.model small.data data db 20h,20h,20h,20h,20h,39h,0dh,$.code.startupmov cx,09h; 设循环次数l
14、op:mov ah,09h;显示功能调用lea dx,dataint 21hcall near ptr delay;调用延时子程序dec data+5;修改显示数字loop lop.exitDelay proc near uses cx ;延时子程序 mov bx,06ffh ;设第二时常数Delay1 :mov cx,0h loop $ ;自身循环CX次 dec bx ;第二时常数减1 jnz delay1 ;不为零循环 retDelay endpend开始CX 循环次数字符串显示功能调用延时子程序调用显示数字修改CX-1=0?NY结束主程序流程:延时子程序流程:延时子程序定义BX 第二时常
15、数CX 第一时常数CX-1=0?NYBX-1BX=0?NY子程序返回子程序结束关键词实验四 排序程序 一实验目的 1学习无符号数比较大小指令; 2掌握多重循环编程方法; 3掌握汇编语言编写排序程序的思路和方法。二实验内容 1单字节无符号数排序。 2去极值滤波。三实验要求 1单字节无符号数排序:DATANUM单元开始存放双字节无符号数,表示要排序数据 的个数,DATAS单元开始存放要排序的数据,数据个数至少10个,程序运行之后, 这些数据按照由小到大的顺序仍然存放于DATAS单元开始的位置。 2 去极值滤波:某控制系统为了抗干扰,采用去极值滤波法处理采集数据,取连 续6个A/D采样值12位双字节
16、,低12位,要求去掉最大值和最小值,将 余下4个数求平均值,用该平均值代表当前时刻系统状态的真值。试编一程序完 成这个滤波过程。单字节无符号数排序流程图:开始BL 数据个数-1CX BL扩展数据指针 SI 置 0累加器 前数 前数与后数比较前数后数前、后数交换数据指针 SI 指向下一数数据指针 SI 指向下一数YNBL-1CX-1=0?CX-1=0?NNYYZF=1?N结束Y .model small .586 .data datanum db 10 datas db 21h,13h,4h,5h,7h db 6h,8h,20h,9h,11h .code .startup mov bl,data
17、num dec bl lop0: movzx cx,bl mov si,0 lop: mov al,datassi cmp al,datassi+1 ja jh inc si loop lop jmp next jh: xchg al,datassi+1 mov datassi,al inc si loop lopnext: dec bl jz finish jmp lop0finish: nop .exit end去极值滤波开始调排序子程序对数据进行排序对排完序的数据掐头去尾求和求均值保存结果结束 .model small .586 .datadatanum db 6datasdw 0123
18、h,0abch,0234h dw 0345h,0456h,0567h .code.startupcall px ;排序mov si,offset datas+2 ;掐头去尾送指针mov cx,4 ;送累加次数clc ;清进位mov ax,0 ;取首数qh:adc ax,si ;累加inc siinc siloop qhshr ax,2 ;除4mov datas,ax ;存结果到DATAS首位 .exitpxproc near mov bl,datanum;取字长 dec bllop0: movzx cx,bl;送比较次数 mov si,0lop:mov ax,datassi;送前数cmp ax
19、,datassi+2;与后数比较 ja jh;前大于后,转交换inc siinc si;指针加 1 loop lop;循环比较 jmp next;一轮排序完jh: xchg ax,datassi+2;交换 mov datassi,ax inc siinc si loop lopnext: dec bl;修改比较次数 jz finish jmp lop0finish: nop;结束 retpx endp end实验五 分支程序一、实验目的 掌握分支程序编程方法,复杂分支程序的查表法等。二、实验内容 1、 学生课程成绩分段统计。 2、 键盘及屏幕显示功能调用。三、实验要求 1、 学生课程成绩分段统
20、计:用单字节表示每个学生的学号,学生的课程成绩用两位十进制数表示最低0分,最高99分,规定0F0H表示作弊,0F1H表示缺考,0FFH为一组学生成绩的结束符。学生成绩在内存的存放形式为“学号,成绩,每个学生占两个字节,从内存SCORE为首址开始存放。要求学生人数不少于10个,试编程序,按0 9、10 19、20 29、80 89、90 99及作弊、缺考等12种情况把学生的课程成绩进行分段统计,将统计结果存入以COUNT为首址的12个单元中。 2、试编一程序扫描键盘,当B键按下时,在屏幕上显示09循环计数;S键按下时停止计数;再按B键继续计数过程。E键按下时退出程序。 3、用DEBUG调试程序预
21、置数据和查看程序运行结果,以验证程序正确性。 学生课程成绩分段统计开始设置学号、成绩指针取学号取成绩是结束标志?取十分位,并将十分值扩展为16位送DI,对DI所指统计区段统计值加1是作弊?是缺考?修改指针CX-1=0?CX 统计上限作弊统计区段统计值加1缺考统计区段统计值加1结束YYYYNNNN .model small .586 .data score db 1,10h,2,20h,3,30h,4,40h,5,50h,6,77h,7,70h db 8,80h,9,90h,10h,08,11h,0f0h,12h,0f1h,0ffhcount db 12 dup(?) .code .startu
22、p mov cx,20;送统计上限 mov si,0;SCORE 统计指针statistic: mov al,scoresi ;取学号 cmp al,0ffh ;判是否为结束 je sta_end;转统计结束 mov bl,scoresi+1;取成绩 cmp bl,0f0h;是否作弊 je fake;是,转作弊处理 cmp bl,0f1h;是否缺考 je miss;是,转缺考处理 shr bl,4;取十分位 movzx di,bl ;将十分值扩展为16位送DI inc countdi ;相应区段统计值加1down: inc si ;改指针 inc si loop statistic;循环sta
23、_end:nop;结束 .exitfake: mov di,10;作弊处理 inc countdi jmp downmiss: mov di,11;缺考处理 inc countdi jmp down end键盘及屏幕显示功能调用开始显示提示信息置处理指针为“停止调延时、键盘扫描程序有键动?转处理指针处B 键?S 键?E 键?转处理指针处结束置处理指针为“计数置处理指针为“停止NYYYYNNN处理指针为“计数处理指针为“停止计数显示延时、键盘扫描程序子程序定义BX 第二时常数CX 第一时常数CX-1=0?NYBX-1BX=0?NY子程序返回监测键动有键动?做键动标志bx=1NY.model sm
24、all.dataMess1 db press b button - count,0dh,0ahmess2 db press s button - stop,0dh,0ahMess3 db press e button - exit,0dh,0ah,$count db 20h,20h,20h,20h,20h,30h,0dh,$.code.startupmov ah,09h;显示提示信息mov dx,offset mess1int 21hmov si,stop;设处理指针scan: call near ptr delay ;调延时、键扫程序 or bx,bx;判有无键动 jnz scan1;有键动
25、,转键处理 jmp si;无键动,转当前处理程序scan1: cmp al,b ;键处理程序 je b_proc cmp al,s je s_proc cmp al,e je e_proc call delay jmp sib_proc: mov si,count_;B键处理 jmp scans_proc: mov si,stop;S键处理 jmp scane_proc: nop;E键处理 nop .exitcount_: inc count+5;修改显示数字 mov al,3ah;比较超限 cmp al,count+5 ja down;假设不超限,调显示 mov count+5,30h;超限
26、,设启始值down: mov ah,09h;显示功能调用 lea dx,count int 21h jmp scanstop: jmp scan nopDelay proc near uses cx;延时子程序 mov bx,380h;设第二时常数delay1: mov cx,0h loop $;自身循环CX次 mov dl,0ffh;监测键动 mov ah,06h int 21h jnz key_ret ;假设有键动,延时终止,转键处理 dec bx;第二时常数减1 jnz delay1;不为零循环 jmp delay_retkey_ret: mov bx,1;做键动标志delay_ret:
27、 retDelay endp end硬件实验局部本局部共进行3次实验,实验内容如下:1 实验六 并行接口技术实验 2 实验七 8254定时/计数器实验3 实验九 A/D转换实验 下面根据实验台实物介绍实验台特别说明:为了方便实验,实验台设计时已将实验用相关器件的地址线、数据总线及除片选CS外的控制线连接到位,并在每一个实验电路附近予留有假设干信号连线插孔。实验时只要将相应插孔用单股导线对应相连即可组成完整的实验电路。在给出的实验电路图中,线路所带小圆圈即表示连线插孔。硬件实验本卷须知:1.在实验台断电条件下,才能用单股导线连接电路;2.线路连接完成、检查确认没有错误后,再开通实验台电源;3.用
28、单股导线连接电路时,要将单股导线线头整直,并确认线头没有断裂;4.实验完成后,关断实验台电源,再一根一根垂直拔掉连接导线,并把连接导线整好放入线盒。实验六 并行接口技术实验 一实验目的 1.掌握8255A并行接口的根本使用方法。 2.理解数码管扫描显示原理,学习数码管扫描显示方法。二实验内容 1.用8255A作为并行接口,从8255A的一个端口输入开关量到CPU或内存,再将这一数据通过数据总线和8255A的另一个端口扫描输出到数码管。设8255A的A口为输入方式,接逻辑电平开关;8255A的B口为输出方式,通过MC1413驱动器接数码管的位选端;数码管的字划端通过74HC573与数据总线相连;
29、逻辑电平开关SK1SK6按16编号。试编一程序,用一位数码管指示出逻辑电平开关为“0状态的开关编号,即当1号逻辑电平开关为“0时,所选数码管显示“1,2号逻辑电平开关为“0时,数码管显示“2,6号逻辑电平开关为“0时,数码管显示“6。所有逻辑开关的初始状态为“1。 2.设8255A的B口为输出方式,通过MC1413驱动器接数码管的位选端;数码管的字划端通过74HC573与数据总线相连。试编一动态扫描程序,让6个数码管“同时点亮,显示“1、2、3、4、5、6。三实验电路及设计 1.实验电路图 2.实验连线1逻辑电平开关输出孔K1K6对应连接到8255A的PA0PA5;28255A的PB0PB5对
30、应连接到数码管的位选端JM1JM6;3数据总线D0、D1、D2、D3、D4、D5、D6、D7对应连接到数码 管的字划端a、b、c、d、e、f、g、dp;48255A的片选端CS8255连到译码控制单元的300-303H;574HC573的使能端CS573连到译码控制单元的310H。3.8255A的端口地址 PA口:300H,PB 口:301H,PC口:302H,控制存放器:303H。4.数码管编码表 “0-3FH “1-06H “2-5BH “3-4FH “4-66H “5-6DH “6-7DH “7-07H “8-7FH “9-6FH “A-77H “B-7CH “C-39H “D-3EH
31、“E-79H “F-71H 有关问题的说明数码管共阴:DPDP共阴地数字字型码5不闭合,数码管就点不亮多个数码管扫描显示:多个数码管扫描显示:限流电阻锁存器JM3、JM2、JM1谁为,谁连接的数码管就显示锁存器当前锁存的值所谓扫描显示是:对个数码管:.给锁存器送第个数码管显示内容,而后第个数码管公共端接低,延时.给锁存器送第个数码管显示内容,而后第个数码管公共端接低,延时.给锁存器送第个数码管显示内容,而后第个数码管公共端接低,延时第步后,再从开始,周而复始。那么, JM3、JM2、JM1是互斥的了!连接数据总线D7D0 驱动器实验 6.174HC573锁存器A口 K6 K5 K4 K3 K2
32、 K1 开关ABCDEFGDP限流电阻DbusD7D08255MC1413驱动器B口COMDbusD7D0CS573CS8255A口开始初始化8255点亮一位数码管读键盘有键?读开关量,并取反位扫描,确定开关号取对应开关号的字型码输出对应的数字结束; CS8255 - 300_303h; CS573 - 310h; k1.k6 - PA0.PA5; JM1.JM6-PB0.PB5; D0.D7-A.B.DP.model small .586 p8255 equ 0300h ;片选地址 p_ctl equ 90h ;8255控制字 s_l_a equ 310h ;573锁存地址.datatabl
33、e db 3fh,06h,5bh,4fh,66h ;0,1,2,3,4字型 db 6dh,7dh,07h,7fh,6fh ;5,6,7,8,9 .code .startup mov dx , p8255+3 ;8255初始化 mov al , p_ctl out dx,al mov dx , p8255 +1 ;点亮数码管SM1 mov al, 01h out dx,allop: mov ah,06h ;键入“e结束执行 mov dl,0ffh int 21h cmp al,e je scan_end mov dx,p8255 ;读开关 in al,dx not al movzx ax,al
34、bsf bx,ax ;从ax低位起扫描,将第一个 ; 为1的位号存BXxchg al,blmov bx,offset table ;读字型码xlat ;查表,BX+AL送ALmov dx,s_l_a;输出对应的数字out dx,aljmp lop ;循环扫描scan_end:.exit end实验 6.2限流电阻DbusD7D08255MC1413驱动器B口COMDbusD7D0CS573CS825574HC573锁存器COMCOMCOMCOMCOMABCDEFGDP开始初始化查表取显示数字字型码显示字型码送锁存器输出取对应数码管字位、并输出+下一扫描位置扫描位数?调延时初始扫描位置(显示数字
35、)初始扫描位置读键盘有键动?结束延时程序流程见前; CS8255 - 300_303h; CS573 - 310h; JM1.JM6-PB0.PB5; D0.D7-A.B.DP; .model small p8255 equ 300h;片选地址 p_ctl equ 10010000b;8255控制字s_l_a equ 310h ;573锁存地址.datatable db 3FH,06H,5BH,4FH ,66H ;0,1,2,3,4 db 6DH,7DH,07H,7FH ,6FH ;5,6,7,8,9 .code .startup mov dx,p8255+3;发控制字 mov al,p_ct
36、lout dx,almov cl,1;设扫描位置lop:mov al,cl;取显示数字mov bx,offset table;读字型码xlatmov dx,s_l_a;输出字型码out dx,al mov al,80hrol al,cl ;左循环移位mov dx,p8255+1out dx,al ;送B口控制的数码管位inc clcmp cl,6jbe down;假设显示位置大于等于6,;返回启始位置1mov cl,1down:call delaymov ah,06;判有键动,跳出循环mov dl,0ffhint 21hjnz scan_endjmp lop;循环扫描scan_end:nop.
37、exit delayproc near uses cx;延时子程序 mov bx,02hdelay1:mov cx,0h loop $ dec bx jnz delay1 retdelayendp end实验七 8254定时/计数器实验 一实验目的 1.掌握8254定时/计数器的根本使用方法。 2.了解8254定时/计数器利用级连扩大计数范围的方法。 3.了解多I/O芯片协同工作的原理和方法。二实验内容 1.将8254定时器0设置为方式2分频,定时器1设置为方式3方波,定时器0的CLK0端接1M或2M时钟,定时器0的输出脉冲作为定时器1的时钟输入。将定时器1的输出脉冲接在一个LED灯上或风鸣器
38、上。编程使8254工作,观察灯的状态或风鸣器声响。 2.用8254做秒信号源,用8255A控制交通灯的红绿变化,完成一交通灯控制系统,使每10秒切换一次通行方向。三实验电路及设计 1 .实验电路图 2.“实验内容1实验连线 18254的GATE0、GATE1接高电平; 28254 T0的CLK0接1M或2M时钟孔; 38254 T1的CLK1接T0的OUT0; 48254的片选端CS8254连到译码控制单元的304-307H; 58254 T1的OUT1接LED灯或风鸣器的输入端L1或BJ孔。 3.“实验内容2实验连线 以下连线假设8255A的A口为输入方式、B口为输出方式,8255A的PA1
39、 连接8254 T1的OUT1,8255A的B口控制交通灯的八只LED灯。 1连线同“实验内容1的14; 28254 T1的OUT1接8255A的PA1孔; 38255A的PB7PB0对应连接到dp、g、f、e、d、c、b、a,它们对 应交通灯的Wr、 Er、 Wg、 Eg、 Nr、 Sr、 Ng、 Sg灯; 4交通灯八只LED发光管的公共控制端JTD孔接高电平; 58255A的片选端CS8255连到译码控制单元的300-303H。 4.8254和8255A的端口地址 8254的端口地址: 定时器0分频系数存放器 304H, 定时器1分频系数存放器 305H, 控制存放器 307H。 8255
40、A的端口地址: PA口:300H,PB 口:301H,PC口:302H,控制存放器:303H。 实验 .1开始初始化T0初始化T装T0低字节计数初值结束装T0高字节计数初值装T低字节计数初值装T高字节计数初值;cs8253-304_307h;clk0 - 1M;out0 -CLK1;out1 - BJ 或 DL1;gate0 - K1,令k1=1;gate1 - K2,令k2=1.MODEL SMALL CS8253 EQU 304H T0_CTL EQU 00110100B ; 对T0 两次读写,先低后;高。 T0为方式2分频 T1_CTL EQU 01110110B ;对T1 两次读写,先
41、低;后高。 T1为方式3方波.DATA T0_DATA DB 0FFH,040H T1_DATA DB 0FFH,0.CODE.STARTUPMOV DX,CS8253+3 ;初始化T0MOV AL,T0_CTLOUT DX,ALMOV DX,CS8253 ;给T0低字节装计数初值MOV AL,T0_DATAOUT DX,ALMOV AL,T0_DATA+1 ;给T0高字节装计数初值OUT DX,ALMOV DX,CS8253+3 ;初始化T1MOV AL,T1_CTLOUT DX,ALMOV DX,CS8253+1MOV AL,T1_DATA ;给T1低字节装计数初值OUT DX,ALMOV
42、 AL,T1_DATA+1 ;给T1高字节装计数初值OUT DX,AL.EXITEND实验 .开始8254 T0 初始化给8254 T0装初值8254 T 初始化给8254 T装初值8255初始化为A口入、B口出8255 B口输出方向初值读8255 PA1、测试8255 PA1PA1?读8255 PA1、测试8255 PA1PA1?控制换向8255 B口输出方向值检查键盘有键盘动?结束;cs8254-304_307h;clk0 - 1M;out0 - clk1;out1 - 8255 的 PA1;gate0 - k1,令k1=1;gate1 - k2,令k2=1;JTD- k3,令k3=1;c
43、s8255 - 300_303h;8255(PB7 . PB0)- (dp.G.F.E.D.C.B.A) .MODEL SMALLT8254 EQU 304HT0_CTL EQU 00110100BT1_CTL EQU 01110110Bp8255 equ 300h;片选地址p_ctl equ 10010000B;8255控制字.DATAT0_DATA DB 0FFH,040HT1_DATA DB 0FFH,0dir_data DB 00111100B.CODE.STARTUPMOV DX,T8254+3;8254 T0 初始化MOV AL,T0_CTLOUT DX,ALMOV DX,T825
44、4 ;给8254 T0装初值MOV AL,T0_DATAOUT DX,ALMOV AL,T0_DATA+1OUT DX,ALMOV DX,T8254+3 ;8254 T1初始化MOV AL,T1_CTLOUT DX,ALMOV DX,T8254+1 ;给8254 T1装初值MOV AL,T1_DATAOUT DX,ALMOV AL,T1_DATA+1OUT DX,ALmov dx,p8255+3;8255为A口入,B口出 mov al,p_ctlout dx,almov dx,p8255+1;8255 B口输出方向初值mov al,dir_dataout dx,albit_test0:;扫描上
45、升沿mov dx,p8255in al,dxtest al,2 ;测试8255 PA1,等待PA1=0jz bit_test1 ;PA1=0转jmp bit_test0 ;PA1=1再测bit_test1:mov dx,p8255in al,dxtest al,2 ; 测试8255 PA1,等待PA1=1jnz dir_ctl ;有上升沿转jmp bit_test1 ;上升沿没到再测dir_ctl:mov al,dir_data ;方向控制not al ;换向mov dir_data,almov dx,p8255+1 ;8255 B口输出方向值out dx,almov ah,0bh ;检查键盘
46、int 21hor al,al ;有键盘输入转jnz dir_endjmp bit_test0dir_end:.EXITEND实验九 A/D转换实验 一实验目的 学习模/数转换器使用方法,理解模/数转换原理。二实验内容 1给A/D转换器输入一可调节的电压信号,假设该输入信号为一水塔的水位高度信号,请结合应用8255A接口芯片,编程完成以下功能:当水位低于PL时开报警、并翻开水泵点亮一指示灯,水位在PLPH之间时关闭报警,水位高于PH时开报警、并关闭水泵指示灯熄灭。设PH=0B4H 约3.5V,PL=66H 约2.0V。 2用A/D转换器对电压信号V4连续采集4次,求出均值,放入指定单元;并把采集均值转换为电压,通过8255在数码管上显示。三实验电路及设计 1.实验电路图.“实验内容1实验连线 以下连线假设8255A的A口为输出方式,8255A的PA6控制一LED灯、8255A的PA7控制报警风鸣器。(1)J18、J19短路块接到I/O端;(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粮食铁路运输代理合同
- 离职协议书可以领失业金
- 纺织用工合同协议书
- 房屋租赁合同拖欠房租解除告知函
- 第四章 建设工程合同法律原理与实务-授课教师 吴超兴-1733553549208
- 母乳皂课件讲解
- 《客户服务沟通技巧》课件
- 八年级语文下册《醉翁亭记》课件2人教版 2
- 《雄激素与男科疾病》课件
- 小学六年级下册科学课件教科版第2课时 月相变化
- 《消费心理学》课程标准
- DB5117-T 76-2023 磷石膏基植生材料生态修复应用技术规范
- 国开电大本科《人文英语4》机考真题(第十九套)
- 新产品试产管理流程
- 煤矿全员安全教育培训考试试卷+答案
- 丽江地区古城区2023-2024学年数学四年级第一学期期末统考模拟试题含答案
- 新中国史2023年春季学习通超星课后章节答案期末考试题库2023年
- 粉尘爆炸的危害与预防教学课件
- GB 19517-2023国家电气设备安全技术规范
- GRR-计数型(范例填写)
- 促进学习的课堂评价
评论
0/150
提交评论