微机原理大作业

合集下载

微机原理程序设计大作业-2011

微机原理程序设计大作业-2011

微机原理与程序设计大作业----汇编语言程序设计方法1. 试编写一个程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCⅡ码为07)。

2. 从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并将计数值显示在屏幕上。

3. 试编写一个程序,要求比较数组ARRAY中的三个16位补码数,并根据比较结果在屏幕上显示如下信息:(1) 如果三个数都不相等则显示0;(2) 如果三个数有二个相等则显示1;(3) 如果三个数都相等则显示2。

4. 从键盘输入一系列字符(以回车符结束),并按字母、数字及其它字符分类计数,最后显示出这三类计数结果。

5. 假设已经编制好5个歌曲程序,它们的段地址和偏移地址存放在数据段的跳转表SINGLIST中,试编制程序,根据从键盘输入的歌曲编号1~5,转去执行五个歌曲程序中的一个。

6. 试编制一个程序,把AX中存放的16进制数转换为ASCII码,并将对应的ASCII码依次存放在MEM数组中的四个字节中。

例如:当(AX)= 2A49H时,程序执行完后,MEM中的四个字节的内容为39H,34H,41H,32H。

7. 设有10个学生的成绩分别是76,69,84,90,73,88,89,63,100,80分,试编制一个子程序统计60~69分,70~79分,80~89分,90~99分及100分的人数,放在S6,S7,S8,S9和S10单元中。

8. 编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名及8个字符的电话号码,并以一定的格式显示出来。

主程序TELIST:∙显示提示符INPUT NAME:;∙调用子程序INPUT_NAME输入姓名;∙显示提示符INPUT A TELEPHONE NUMBER:;∙调用子程序INPUT_PHONE输入电话号码;∙调用子程序PRINT_LINE显示姓名及电话号码。

子程序INPUT_NAME:∙调用键盘输入子程序GET_CHAR,把输入的姓名放在INBUF缓冲区中;∙把INBUF中的项目移入输出行OUT_NAME中。

南京邮电大学微机原理作业

南京邮电大学微机原理作业
(由题意可知,使用的是从8259的IR1中断,即用户中断,中断类型为71H或者0AH)
斜体下划线部分可跳过
用户定义的中断服务程序有两个设计方法:
①定义用户中断服务程序为“71H型”
②定义用户中断服务程序为“0AH型”
用户中断服务程序结束
①若用户中断定义为0AH型,服务程序结束前只向主8259送结束命令
5.用系统机串行口采用中断方式完成字符发送和接收,编程时应采取哪些措施?
答:⑴中断允许寄存器相应位置1
⑵MODEM控制寄存器 ,即 打通8250的中断请求通道。
⑶8259相应中断屏蔽位置0(主8259 、 )— 8259
⑷CPU处于开中断(STI)— CPU
6.A、B两台PC机利用主串口进行点-点单工通信(不用联络线),发送采用查询方式,接收采用中断方式。一帧字符包含7个数据位,1个停止位,1个校验位,通信速率为4800波特(分频系数为0018H)。
STI;开中断
SCAN:MOVAH, 01H;设置功能号
INT16H;有键入?
JZSCAN;否循环
CALLRESET;恢复现场
MOVAH, 4CH
INT21H
;--------------------------------------
SERVICEPROC
PUSHA
PUSHDS;保护现场
MOVAX, DATA
MESGDB'Welcome!','$';显示的字符串
DATAENDS
CODESEGMENTUSE16
ASSUMECS:CODE, DS:DATA
BEG:MOVAX, DATA
MOVDS, AX
CLI;关中断
CALLI8259;8259初始化

微机原理作业及参考答案

微机原理作业及参考答案

第一章计算机基础(P32)1-1电子管,晶体管,中小规模集成电路、大规模、超大规模集成电路。

1-2把CPU和一组称为寄存器(Registers)的特殊存储器集成在一片大规模集成电路或超大规模集成电路封装之中,这个器件才被称为微处理器。

以微处理器为核心,配上由大规模集成电路制作的只读存储器(ROM)、读写存储器(RAM)、输入/输出、接口电路及系统总线等所组成的计算机,称为微型计算机。

微型计算机系统是微型计算机配置相应的系统软件,应用软件及外部设备等.1-3写出下列机器数的真值:(1)01101110 (2)10001101(3)01011001 (4)11001110答案:(1)+110 (2)-13(原码) -114(反码)-115(补码)(3)+89 (4)-78(原码)-49(反码)-50(补码)1-4写出下列二进制数的原码、反码和补码(设字长为8位):(1)+010111 (2)+101011(3)-101000 (4)-111111答案:(1)[x]原=00010111 [x]反= 00010111 [x]补= 00010111(2)[x]原=00101011 [x]反= 00101011 [x]补= 00101011(3)[x]原=10101000 [x]反= 11010111 [x]补= 11011000(4)[x]原=10111111 [x]反= 11000000 [x]补=110000011-5 当下列各二进制数分别代表原码,反码,和补码时,其等效的十进制数值为多少?(1)00001110 表示原码14,反码14,表示补码为14(2)11111111 表示原码-127,反码-0,表示补码为-1(3)10000000 表示原码-0,反码-127,表示补码为-128(4)10000001 表示原码-1,反码-126,表示补码为-1271-6 已知x1=+0010100,y1=+0100001,x2=-0010100,y2=-0100001,试计算下列各式。

东北大学接口技术微机原理课程设计大作业

东北大学接口技术微机原理课程设计大作业

东北大学接口技术报告步进电机控制系统学院XXXXXXXXXXXXXXXXX班级XXXXXXXXXXXXXXXXXXX姓名XXXXX学号XXXXXXXXXX日期XXXXXXXXXXXX【实验目的】1、利用PC机和实验箱,设计并实现给定步进电机的控制。

2、进一步掌握对芯片的硬件和软件综合设计方法。

3、了解微机的工作原理,微型计算机的基本结构,接口技术及汇编语言程序设计。

【实验内容】1、控制步进电机转动,要求转速1步/秒。

2、基于实验箱,设计并实现接口和驱动电路。

3、用汇编语言编制程序。

4、改善步进电机的控制性能,控制步进电机转/停;正转/反转;改变转速(至少3档);单步。

【实验设备】1)MUT-III型实验箱2)计算机【总体设计】1、8253定时控制步进速度。

2、8255输出控制脉冲,再经75452驱动电机。

3、系统运行时,通过按键的不同来控制电机转/停;正转/反转;改变转速(至少3档);单步。

【硬件设计】因采用了PC机和PC总线接口应用平台,硬件电路相对简单,除利用了PC机本身资源外(如中断资源),还利用了平台上的8253计数/定时器、8255并行接口单元,再加上外围驱动电路,便构成可步进电机控制电路,硬件原理图如图1:图中75452元件是正与非驱动器,OC门输出,所以加上拉电阻;8253的作用是输出定时信号向CPU申请中断要求输出电机走步的控制信号。

图1【芯片介绍】(1)8253定时器/计数器电路该电路由1片8253组成,8253的片选输入端插孔CS8253,数据口、地址、读、写线均已接好,T0、T1、T2时钟输入分别为8253CLK0、8253CLK1、8253CLK2。

定时器输出、GATE控制孔对应如下:OUT0、GATE0、OUT1、GATE1、OUT2、GATE2、CLK2。

原理图如下:注:GATE信号无输入时为高电平(2)82558255可编程并口电路:该电路由1片8255组成,8255的数据口,地址,读写线,复位控制线均已接好,片选输入端插孔为8255CS,A,B,C三端口的插孔分别为:PA0~PA7,PB0~PB7,PC0~PC7.电路原理如图:8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。

微机原理K60大作业

微机原理K60大作业

多功能电子时钟系统1、显示时间24小时制,可调时间,按*键后两位分钟数闪,表示可以调节(0键+,#键-),再按*键时钟闪,再次按下则表示时间调整完毕,2、Key2按下之后显示闹钟界面,同样可以调节,闹钟用LED1示意蜂鸣器强度,可以通过电位器调节。

调节时假设闹钟响(灯亮);再按key1回到时钟界面;当前时间与闹钟设置时间一样时,闹钟响(LED1亮)1分钟结束后熄灭。

3、Key3按下之后进入秒表界面,按1键开始/暂停,2键停止;3键返回时钟界面4、时间快捷修改法:Uart2电脑发给K60“12.12.12”可以精确修改时间到秒,同时显示修改后时间及当前闹钟设置值。

5、初始时间12.12.12,初始闹钟00.00,初始闹钟功能关闭,按下闹钟设置键(key2)闹钟功能开启;思路:1、Gpio :闹钟(LED1)(8)、时间LED2、(8+4)、uart2、按键1、2、3+闪+加+减2、按键:按键1、2、3+闪+加+减3、Uart2发送给电脑时间,电脑可以发送时间。

4、ADC电位器5、MCG时钟6、PIT0=1s,PIT1=5ms,PIT2闪7、Irq中断方式代码:#include"MK60D10.h"#include"adc.h"#include"irq.h"#include"xianshi.h"#include"uart.h"#include"xianshi.h"int shizhong=12,fenzhong=12,miaozhong=0;float voltage=0;int s[6]={0},n[4]={0};unsigned int table[10]={0x3F,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned int ptb=0;unsigned int miaobiaom=0,miaobiaoms=0,m[4]={0};//Ãë±íunsigned char chs[6]={0},chn[4]={0};//²¢ËÍʱ¼äunsigned int i=0,j=0,ii=0;unsigned int key1sta=1,key2sta=1,key3sta=1,temp1,temp2,temp3,N=0;//pwmint pwm;//fasong¼ÆÊ±int fasong1s=0;//juzhengjianpanunsigned int bKeyTest=0;int panduan1=0;int jishu=0,panduanshan=0;//ÉÁÁÁvoid pit(void){SIM->SCGC6|=1<<23;PIT->MCR&=~0X2;//¶¨Ê±1sPIT->CHANNEL[0].LDVAL=48000000-1;PIT->CHANNEL[0].TCTRL|=0X03;enable_irq(68);//10MSPIT->CHANNEL[1].LDVAL=480000-1;PIT->CHANNEL[1].TCTRL|=0X03;enable_irq(69);//5msPIT->CHANNEL[2].LDVAL=120000-1;PIT->CHANNEL[2].TCTRL|=0X03;enable_irq(70);//0.2MSPIT->CHANNEL[3].LDVAL=9600-1;PIT->CHANNEL[3].TCTRL|=0X03;enable_irq(71);}void PIT0_IRQHandler(void ){PIT->CHANNEL[0].TFLG|=0x1u;//mÃë¼ÆÊ±miaozhong++;if(miaozhong>59){fenzhong++;miaozhong=0;}if(fenzhong>59){shizhong++;fenzhong=0;}if(fenzhong<0)fenzhong=59;if(shizhong>23){shizhong=0;}if(shizhong<0)shizhong=23;//Ãë¼ÆÊ±½áÊøs[0]=shizhong/10;s[1]=shizhong%10;s[2]=fenzhong/10;s[3]=fenzhong%10;s[4]=miaozhong/10;s[5]=miaozhong%10;n[0]=naozhongs/10;n[1]=naozhongs%10;n[2]=naozhongf/10;n[3]=naozhongf%10;for(i=0;i<6;i++)chs[i]=s[i]+'0';for(i=0;i<5;i++)chn[i]=n[i]+'0';if(panduan1){//²¢ËÍʱ¼äuart2_putstring("the time is ");for(i=0,j=0;i<6;i++,j++){if(j==2||j==4) uart2_putchar('-');uart2_putchar(chs[i]);}uart2_putstring(" / the alarm clock is ");for(i=0,j=0;i<4;i++,j++){if(j==2) u art2_putchar('-');uart2_putchar(chn[i]);}uart2_putstring("\n");//²¢ËÍÍê³Épanduan1=0;}}void PIT1_IRQHandler(void ) //10ms{PIT->CHANNEL[1].TFLG|=0x1u;if(model==3&&model3_1){miaobiaoms++;if(miaobiaoms==100){miaobiaom++;miaobiaoms=0;}}m[0]=miaobiaom/10;m[1]=miaobiaom%10;m[2]=miaobiaoms/10;m[3]=miaobiaoms%10;//°´¼üN++;if(N%5==0){TestKey();//juzhengjianpan}if(N%2==0){temp1=PTE->PDIR;temp1&=(1<<26);if((key1sta&&(!temp1))) //ʱÖÓKEY1{if(model!=3) model=1;else {model3_1=~model3_1;}}if(temp1) key1sta=1;else key1sta=0;//temp2=PTE->PDIR;temp2&=(1<<25);if(key2sta&&(!temp2)) //ÄÖÖÓ{if(model!=3) { model=2;naozhongkai=1;}else {model3_2=0;model3_1=0;}if(model3_2==0){miaobiaom=0;miaobiaoms=0;model3_2=1;}}if(temp2) key2sta=1;else key2sta=0;//temp3=PTE->PDIR;temp3&=(1<<24);if(key3sta&&(!temp3)) //Ãë±íKEY3{if(model!=3){model=3;model3_1=0;model3_2=1;}else {model=1; }}if(temp3) key3sta=1;else key3sta=0;}//uart²¢ËÍʱ¼äif(panduan){shizhong=(UART2_RecBuf[0]-48)*10+UART2_RecBuf[1]-48;fenzhong=(UART2_RecBuf[3]-48)*10+UART2_RecBuf[4]-48;miaozhong=(UART2_RecBuf[6]-48)*10+UART2_RecBuf[7]-48-1;panduan=0;panduan1=1;}}void PIT2_IRQHandler(void ) //2.5ms4¶ÎÊýÂë¹ÜÏÔʾ{PIT->CHANNEL[2].TFLG|=0x1u;voltage=3.3*adc0_convert()/4095;naozhong();PTB->PDOR&=~0Xf;PTB->PDOR|=1<<ptb;PTB->PDOR|=0xff<<16;if(model==1){if(ptb==0&&panduanshan!=2) PTB->PDOR&=~(table[s[0]]<<16);if(ptb==1&&panduanshan!=2) PTB->PDOR&=~((table[s[1]]|(0x01<<7))<<16);if(ptb==2&&panduanshan!=1) PTB->PDOR&=~(table[s[2]]<<16);if(ptb==3&&panduanshan!=1) PTB->PDOR&=~(table[s[3]]<<16);}if(model==2){if(ptb==0&&panduanshan!=2) PTB->PDOR&=~(table[n[0]]<<16);if(ptb==1&&panduanshan!=2) PTB->PDOR&=~((table[n[1]]|(0x01<<7))<<16);if(ptb==2&&panduanshan!=1) PTB->PDOR&=~(table[n[2]]<<16);if(ptb==3&&panduanshan!=1) PTB->PDOR&=~(table[n[3]]<<16);}if(model==3){if(ptb==0&&panduanshan!=2) { PTB->PDOR&=~(table[m[0]]<<16); }if(ptb==1&&panduanshan!=2) PTB->PDOR&=~((table[m[1]]|(0x01<<7))<<16);if(ptb==2&&panduanshan!=1) PTB->PDOR&=~(table[m[2]]<<16);if(ptb==3&&panduanshan!=1) PTB->PDOR&=~(table[m[3]]<<16);}ptb++;if(tiaozheng1!=0){if(jishu>=9)if(ptb==2||ptb==3){if(tiaozheng1%2!=0) panduanshan=1;else panduanshan=2;if(jishu>=18) {jishu=0;panduanshan=0;}}}else panduanshan=0;if(ptb>3) {ptb=0;jishu++;}}void PIT3_IRQHandler(void )//ÄÖÖÓÏÔʾ{pwm=voltage*100/3.3;PIT->CHANNEL[3].TFLG|=0x1u;if((naozhongL==1||model==2)&&model!=3){if(ii<pwm) PTC->PDOR&=~0xff;else PTC->PDOR|=0xff;ii++;if(ii==100) ii=0;}else PTC->PDOR|=0xff;}。

微机原理课程设计大作业

微机原理课程设计大作业

微机原理课程设计大作业一、课程目标知识目标:1. 让学生掌握微机原理的基本知识,包括计算机硬件组成、工作原理及性能指标。

2. 帮助学生理解并掌握汇编语言编程,能运用汇编语言实现基本的输入输出功能。

3. 让学生了解微机系统中的中断原理及其应用。

技能目标:1. 培养学生运用微机原理知识进行实际电路设计和分析的能力。

2. 培养学生独立完成汇编语言编程,实现微机控制相关功能的能力。

3. 提高学生运用所学知识解决实际问题的能力。

情感态度价值观目标:1. 培养学生对微机原理课程的兴趣,激发学生学习热情,增强学习主动性。

2. 培养学生具备团队合作精神,学会在团队中分工合作、共同解决问题。

3. 引导学生关注微机原理在科技发展中的应用,认识其在社会发展中的重要性。

课程性质:本课程为微机原理课程的实践环节,以大作业的形式进行,旨在培养学生的实践能力和创新能力。

学生特点:学生已具备一定的微机原理知识,具有一定的汇编语言编程基础,但实践能力有待提高。

教学要求:结合学生特点,注重理论与实践相结合,强调在实践中掌握知识,提高学生的实际操作能力和解决问题的能力。

将课程目标分解为具体的学习成果,以便于后续教学设计和评估。

二、教学内容本课程教学内容主要包括以下三个方面:1. 微机原理基础知识回顾:- 计算机硬件系统组成与工作原理- 微处理器结构及性能指标- 存储器层次结构与分类- 指令系统与寻址方式2. 汇编语言编程与实践:- 汇编语言基本语法与指令- 常用伪指令与宏指令- 程序结构与流程控制- 中断处理与中断服务程序编写3. 微机系统设计与分析:- 微机系统设计方法与步骤- 基本I/O接口电路设计- 中断控制器设计与实现- 微机控制系统综合设计教学大纲安排如下:1. 第一周:微机原理基础知识回顾2. 第二周:汇编语言编程与实践3. 第三周:微机系统设计与分析4. 第四周:大作业实践与指导教学内容与教材关联性说明:1. 教学内容与教材章节相对应,确保学生能够结合教材深入理解课程内容。

微机原理大作业

微机原理大作业

微机原理大作业本页仅作为文档页封面,使用时可以删除This document is for reference only-rar21year.March微机原理大作业基于8086最小方式系统总线完成电路设计及编程:1、扩展16K字节的ROM存储器,起始地址为:0x10000;2、扩展16K字节的RAM存储器,起始地址为:0xF0000;3、设计一片8259中断控制器,端口地址分别为:0x300,0x302;4、设计一片8253定时控制器,端口地址分别为:0x320,0x322,x324,0x326;5、设计一片8255并行接口,端口地址分别为:0x221,0x223,x225,0x227;6、设计外部连接电路实现通过8253每一秒钟产生周期中断信号,并利用该信号通过8259向8086处理器发送中断请求,利用该中断同步,8086处理器周期的从8255并行接口输入8位开关量的值,并存入到RAM的某个地址中。

7、请编写实现上述功能的完整的汇编程序代码,包括主程序及中断服务程序,在主程序中需要完成中断向量表的初始化(假定8259采用8086的30号中断进行同步,中断服务程序段的标号为:INT30_ISR),8259,8253(假定外部能有的时钟源为1MHz)及8255的初始化;在中断服务程序实现从8255中输入开关量并存储到RAM的某个地址中。

MODEL SMALL.DATACNT DB 0000HINT-TBL SEGMENT AT 0 ;中断向量表ORG 30*4DD INT30_ISRINT-TBL ENDAPORT EQU 221H ;8255地址BPURT EQU 223HCPURT EQU 225HCONTR EQU 227HTIME_1 EQU 320H ;8253地址TIME_2 EQU 322HTIME_3 EQU 324HCONTR_8253 EQU 326HMPORT0 EQU 300H ;8259地址MPORT1 EQU 302HRAM1 EQU 10000HRAM2 EQU F0000H.CODE.STARTUPMOV AL,90H ;定义8255A工作方式A组方式0输入MOV DX,CONTROUT DX,ALMOV AL,14H ;定义8253计数器0工作方式方式2MOV DX,CONTR_8253OUT DX,ALMOV AL,54H ;定义8253计数器1工作方式方式2 MOV DX,CONTR_8253OUT DX,ALMOV AL,94H ;定义8253计数器2工作方式方式2 MOV DX,CONTR_8253OUT DX,ALMOV AL,64H ;将外部能有的时钟源为1MHz转换为1s MOV DX,TIME_1OUT DX,ALMOV AL,64HMOV DX,TIME_2OUT DX,ALMOV AL,64HMOV DX,TIME_3OUT DX,ALLOOP1: JMP LOOP2 ;主程序进入无限循环,等中断LOOP2: JMP LOOP1.exit ;中断程序部分INT30_ISR:CLT ;8259A关中断MOV AL, 13H ;ICW1OUT MPORT0, ALMOV AL, 0C7H ;ICW2OUT MPORT1, ALMOV AL, 01HOUT MPORT1,ALMOV DX,APORTIN AL,DXCMP CNT,4000HJB CASE1CMP CNT,8000HJB CASE2JMP CASE3CASE1 MOV DX,CNT+RAM1 ;第一块RAM未写满OUT DX,ALJMP CNT_INCCASE2 MOV DX,CNT+RAM2-40000H ;第一块RAM写满,第二款RAM未写满OUT DX,ALJMP CNT_INCCASE3 MOV DX,RAM1 ;两块RAM写满OUT DX,ALMOV CNT,0JMP CNT_INCCNT_INC: INC CNTMOV DX,RAM1OUT DX,ALSTI ;开中断END。

微原大作业

微原大作业

微机原理与接口技术 ----大作业2016.6.24大作业:微处理器系统应用设计ARM微处理器系统32位数据总线(D31-D0)、32位地址总线(A31-A0)和控制线RD、WE、0BE和IRQ0。

要求存储器容BE、1BE、2BE、3量为1GB,其中ROM存储区512MB,从0x00000000开始的连续存储区,采用128MB ROM芯片;RAM存储区512MB,采用128MB SRAM 芯片,从0x20000000开始的连续存储区。

SRAM和ROM芯片通过总线与ARM微处理器系统相连;I/O接口为一片8282锁存器、一片七段数码管(共阴极)、一个按键,如下图所示;数码管通过8282锁存器与PA口相连,按键与ARM微处理器IRQ0相连。

每按一次键,通过中断方式在数码管显示其加1后的值(显示值为9时加1后显示0)。

数码管初值为本人学号的最后一位。

编写完成上述处理程序。

处理程序中采用子程序进行数码显示,中断方式实现按键处理,中断服务程序包括显示子程序。

IRQ0图8282锁存器接口图0-9数码管显示字样:要求:1、给出设计的RAM和ROM地址范围及必要说明;2、画出采用基本逻辑门(与、或、非门类)设计译码电路的微处理器总线与存储器连接图;3、画出完成上述处理程序流程图,并做必要的说明;4、程序从地址0x400处启动,给出完整处理程序清单,并有必要的注释。

一.ROM和RAM设计ROM区芯片个数:512M/128M=4片起始地址:0x00000000终止地址:0x1FFFFFFFROM芯片地址线:A[0:26]RAM区芯片个数:512M/128M=4片起始地址:0x20000000终止地址:0x3FFFFFFFRAM 芯片地址线:A[0:26]128MB = 134217728 B = B因此需要27位的地址总线访问存储器地址总线分配: A0~A26 作为存储器地址 A29 A28 A27 作为片选信号272二.电路图设计A29A30A31D[0:31]三.处理程序流程图四.处理程序清单Startup.s------------------------------------------------AREA RESET,CODEEXPORT __VectorsEXPORT Reset_Handler__VectorsDCD __initial_spDCD Reset_HandlerSPACE 14*4SPACE 6*4DCD EXTI0_HandlerReset_Handler PROCIMPORT EX4_EXTIldr r1,=EX4_EXTIbx r1B .ENDPEXTI0_Handler PROCIMPORT EXTI0_Cldr r1,=EXTI0_Cbx r1BX LRENDPAREA STACK,DATASPACE 0x100__initial_spENDMyhead.h---------------------------------------------------------------------- struct _RCC{IntCR;int CFGR;int CIR;int APB2RSTR;int APB1RSTR;int AHBENR;int APB2ENR;int APB1ENR;int BDCR;int CSR;};#define RCC ((volatile struct _RCC *)0x40021000)struct _GPIO{int CRL;int CRH;int IDR;int ODR;int BSRR;};#define GPIOB ((volatile struct _GPIO *)0x40010C00) #define GPIOA ((volatile struct _GPIO *)0x40010800)struct _USART{int SR;int DR;int BRR;int CR1;int CR2;int CR3;};#define USART1 ((volatile struct _USART *)0x40013800)struct _NVIC{int ISER[8];int rsv0[24];int ICER[8];int rsv1[24];int ISPR[8];int rsv2[24];int ICPR[8];int rsv3[24];int IABR[8];int rsv4[56];char IPR[240];int rsv5[644];int STIR;};#define NVIC ((volatile struct _NVIC *)0xE000E100)struct _BTIM{int CR1;int CR2;int rsv0;int DIER;int SR;int rsv1[4];int CNT;int PSC;int ARR;};#define TIM1 ((volatile struct _BTIM *)0x40012C00)struct _DMA_CH{int CCR;int CNDTR;int CPAR;int CMAR;int rsv;};struct _DMA{int ISR;int IFCR;struct _DMA_CH CH[7];};#define DMA1 ((volatile struct _DMA *)0x40020000) #define DMA2 ((volatile struct _DMA *)0x40020400)struct _AFIO{int EVCR;int MAPR;int EXTICR[4];int RESERVED0;int MAPR2;};#define AFIO ((volatile struct _AFIO *) 0x40010000)struct _EXTI{intIMR;int EMR;int RTSR;int FTSR;int SWIER;int PR;};#define EXTI ((volatile struct _EXTI *) 0x40010400 )Myfunction.c--------------------------------------------------------------------------------------------------- #include "Myhead.h"void RCC_Init(){RCC->APB2ENR|=((1<<3)|(1<<2)|(1<<0)); //PB PA AFIOGPIOB->CRL=0x88008; //设置PE3 PE4}void LED_Init(){GPIOA->CRL=0x33333333; //设置输出GPIOA->ODR|=(1<<5); //首先让数码管熄灭}void KEY_Init(){GPIOB->CRL=0x8; //按键设置GPIOB->ODR=0;}void AFIO_Init(){AFIO->EXTICR[0]=0x1; //PB0 TO EXTI0}void EXTI_Init(){EXTI->IMR=0x1; // EXTI0 使能EXTI->FTSR=0x1; // EXTI0 增加}void EXTI_Clear(){EXTI->PR=0x1; // EXTI0 除能}void NVIC_Init(){NVIC->ISER[0]=0xFFFFFFFF; // EXTI0 使能}void LED_Start(){GPIOA->ODR = 0xB6; //显示我的号尾数5 }void LED_On(){int t;t=GPIOA->ODR;if(t==0xFC) GPIOA->ODR=0x60; //0->1if(t==0x60) GPIOA->ODR=0xDA; //1->2if(t==0xDA) GPIOA->ODR=0xF2; //2->3if(t==0xF2) GPIOA->ODR=0x66; //3->4if(t==0x66) GPIOA->ODR=0xB6; //4->5if(t==0xB6) GPIOA->ODR=0xBE; //5->6if(t==0xBE) GPIOA->ODR=0xE0; //6->7if(t==0xE0) GPIOA->ODR=0xFE; //7->8if(t==0xFE) GPIOA->ODR=0xF6; //8->9if(t==0xF6) GPIOA->ODR=0xFC; //9->0}void EXTI0_C(){LED_On();}int EX4_EXTI(){RCC_Init();LED_Init();KEY_Init();AFIO_Init();EXTI_Init();NVIC_Init();for(;;){}return 0; }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

洛阳理工学院微机原理与接口技术《微机原理与接口技术》作为我们机械工程专业的必修的考察课程。

本课程主要讲了计算机接口相关的基本原理、微处理器系统和微型计算机系统的总线、计算机接口技术的介绍以及计算机接口技术在工程实际当中的应用等课程内容的介绍,概括了微机原理与计算机接口技术,微型计算机系统是以微型计算机为核心。

课程主要内容第一章:主要了叙述微型计算机的发展构成和数的表示方法(1)超、大、中、小型计算机阶段(1946年-1980年)采用计算机来代替人的脑力劳动,提高了工作效率,能够解决较复杂的数学计算和数据处理(2)微型计算机阶段(1981年-1990年)微型计算机大量普及,几乎应用于所有领域,对世界科技和经济的发展起到了重要的推动作用。

(3)计算机网络阶段(1991年至今)。

计算机的数值表示方法:二进制,八进制,十进制,十六进制。

要会各个进制之间的数制转换。

计算机网络为人类实现资源共享提供了有力的帮助,从而促进了信息化社会的到来,实现了遍及全球的信息资源共享。

微机系统的基本组成1.微型计算机系统由硬件和软件两个部分组成。

2.系统总线可分为3类:数据总线DB(Data Bus),地址总线AB(Address Bus),控制总线CB(Control Bus)。

3.微机的工作过程就是程序的执行过程,即不断地从存储器中取出指令,然后执行指令的过程。

第二章8086/8088微处理器1.8086微处理器结构:CPU内部结构:总线接口部件BIU,执行部件EU;CPU寄存器结构:通用寄存器,段寄存器,标志寄存器,指令指针寄存器;CPU引脚及其功能:公用引脚,最小模式控制信号引脚,最大模式控制信号引脚。

2、8086/8088 CPU芯片的引脚及其功能8086/8088 CPU具有40条引脚,双列直插式封装,采用分时复用地址数据总线,从而使8086/8088 CPU用40条引脚实现20位地址、16位数据、控制信号及状态信号的传输。

3.8086微机系统存储器组织:存储器组成和分段。

8086微机系统的I/O结构4.8086最小/最大模式系统配置:8086/8088 CPU芯片可以在两种模式下工作,即最大模式和最小模式。

最大模式:指系统中通常含有两个或多个微处理器(即多微处理器系统),其中一个主处理器就是8086/8088 CPU,另外的处理器可以是协处理器I/O处理器。

最小模式:在系统中只有8086/8088一个微处理器。

5.8086CPU时序第三章 8086寻址方式和指令系统1.寻址方式:立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,基址寻址,变址寻址,基址加变址寻址,串寻址,端口寻址,隐含寻址。

2.8086指令系统:数据传送指令,算术运算指令,移位指令,程序控制指令,串操作指令,处理器控制指令,I/O指令,中断指令。

第四章汇编语言、程序设计一、计算机指令编码8086与8088的指令系统完全相同,主要特点:(1) 采用可变长指令,机器指令格式由1~6字节组成,比较复杂,最短8位,最长48位。

(2) 寻址方式多样灵活,处理数据的能力比较强,可处理字节或字、带符号或无符号的二进制数据以及压缩型/非压缩型的十进制数据。

(3) 有重复指令和乘、除运算指令。

扩充了条件转移、移位/循环指令。

(4) 为加强软件中断功能和支持多处理器系统的工作,增设了有关的指令。

1.指令的编码指令:直接控制电路实现特定功能的信息。

机器指令:面向机器,0和1表示机器是否可接受并执行指令。

汇编指令:面向人,符号表示,必须翻译才能执行。

汇编指令的格式:一般格式:操作码操作数具体格式:标号:操作码(空格分隔符)目的操作数(存放结果),(逗号分隔符)源操作数;注释一条指令可以无操作数,必须有操作码,不同的机器,操作数个数不同。

第五章存储器存储器是微型计算机系统中用来存放程序和数据的基本单元或设备。

按存取方式分类(1)随机存取存储器RAM a. 静态RAM b. 动态RAM(2)只读存储器ROM存储器与CPU的连接。

存储器接口应考虑的几个问题1. 存储器与CPU之间的时序配合2. CPU总线负载能力;3. 存储芯片的选用:包括存储器容量及存储器空间的安排第六章输入输出与中断I/O接口:就是将外设连接到总线上的一组逻辑电路的总称,也称为外设接口。

在计算机控制系统中,CPU与外部设备之间进行的信息交换,都是通过接口来实现的。

1、中断源:引起CPU中断的事件,即引起中断的原因或来源。

中断源分为两大类:来自CPU内部的,称为内部中断源;来自CPU外部的,称为外部中断源;1) 内部中断源包括:① CPU执行指令时产生的异常;②特殊操作引起的异常;③是由程序员安排在程序中的INT n 软件中断指令。

2) 外部中断源包括:① I/O设备、数据通道;②实时时钟;③故障源。

2、中断的工作过程1.中断请求2.中断响应3.中断处理4.中断返回第七章:常用可编程数字接口电路1.可编程定时器/计数器Intel8253计算机系统的定时方法通常分软件定时和硬件定时8253的工作方式每个通道都具有六种工作方式的选择权,需注意以下几点:(1)当控制字写入Intel 8253时,其内部所有的控制逻辑电路立即复位,输出端OUT进入初始状态;(2)计数器的启动软启动:硬启动:(3)多数情况下,计数器启动一次只工作一个周期,但有两种方式可供选择,若选择则自动重复计数。

2. 8255A的工作方式8255A具有三种工作方式:方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向传送方式。

实例分析例1、已知片外RAM的10H单元存放8位二进制数,要求将其转移成相应的ASCII码,并以高位在前,低位在后的顺序,依次存放到片外RAM以11H为首地址的连续单元中,试编程。

解:先将中间单元置成30H,然后判欲转换位是否为1,若是,则将中间单元内容加1;否则,中间单元内容保持不变。

通过左移指令实现由高到低的顺序进行转换。

ORG 1000HSTART:MOV R2,#08H ;循环计数初值(循环次数知)MOV R0,#10H ;地址指针初值MOVX A,@R0 ;取数MOV B,A ;暂存B中LOOP:MOV A,#30H ;将中间单元(A)置成30H JNB B.7,NA ;判断转换的二进制位为0否?若是转NAINC A ;若为1,则(A)内容加1,成为1的ASCII码“31H”NA:INC R0 ;修改地址指针MOVX @R0,A ;存放转换的结果MOV A,BRL A,B ;作好准备,判断下一位MOV B,A ;暂存DJNZ R2,LOOP ;判断转换结束否?未完继续SJMP $END例2:编程完成求1~100的累加和,结果送SUM单元。

源程序设计如下:DATA SEGMENTSUM DW ? ;预留结果单元CN EQU 100 ;计数终止值DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATA ;初始化DSMOV DS,AXMOV AX,0 ;累加器清零MOV CX,1 ;置循环计数初始值LP:ADD AX,CX ;求累加和INC CX ;计数器加1CMP CX,CN ;CX和终止值比较JBE LP ;小于等于转LPMOV SUM,AX ;结果送SUMMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START ;汇编结束例3:将键盘输入的小写字母转换为大写字母显示在屏幕上。

源程序设计如下:CODE SEGMENT ;代码段定义ASSUME CS:CODESTART:MOV AL,01H ;DOS调用的01号功能从键盘输入字符INT 21HCMP AL,‘a’;与‘a’的ASCII码比较JB EXIT ;低于‘a’,转EXIT CMP AL,‘z’;与‘z’的ASCII码比较JA EXIT ;高于‘z’,转EXITSUB AL,20H ;大小写字母相差20HMOV DL,AL ;转换后结果送DLMOV AH,02H ;DOS调用02号功能,显示结果INT 21HEXIT:MOV AH,4CH ;返回DOSINT 21HCODE END ;代码段结束END START ;汇编结束第 8章总线技术PCI总线:PCI总线是32位总线。

PCI总线的总线频率为33.3MHz,总线宽度为64位的情况下,总线数据传输率为266.4 MB/s 。

第 9章可编程接口芯片及其8255A及其应用8255A的内部结构、控制字、各工作方式的特点及有关的固定连线。

重点掌握8255A方式0、方式1的应用。

在并行可编程电路8255中共有3个8位的I/O端口Intel 8255A的PA口有一个8位数据输入锁存器和8位数据输出锁存/缓冲器。

Intel 8255A的PB(PC口)有一个8位数据输入缓冲器和8位数据输出锁存/缓冲器。

8255 A工作于基本输入/输出方式下,输出和输入数据为输出数据锁存,输入数据不锁存。

8254的内部结构、初始化编程。

要求会分析各计数器的工作方式,计数初值。

8254的内部结构8254内部结构由数据总线缓冲器、读/写逻辑、控制字寄存器以及3个独立的16位计数器组成。

计数器包括:8位的控制字寄存器和状态寄存器16位的计数初值寄存器CR16位的减1计数器CE16位的输出锁存寄存器OL可编程计数/定时器电路8254的工作方式共有6种。

定时器/计数器输出信号OUT 输出高电平信号时,表明计数执行单元计数值已经等于0 。

定时器/计数器的门控信号是由外围设备送来的,可用作为对时钟的控制。

定时器/计数器的输出OUT可以连到系统控制总线上的中断请求线上。

当计数到达“0”时,或者其他情况下使 OUT端有输出时,产生中断。

当定时取计数器的输出连到一个输入/输出设备上时,可去启动一个输入/输出操作。

对8254当计数初值为0时,定时时间最长。

8254初始化写入控制字后,若再写入初始值要经过(一个时钟上升沿和一个下降沿),计数执行部件开始记数。

8254工作于方式0时,当计数值减为0时输出 OUT为高电平一直维持到复位或改变计数值。

8254工作于方式 1时,欲使输出负脉冲加宽,则可以在输出计数期间重新加入带有上升沿的GATE信号8254工作于方式1时,输出负脉冲的宽度等于计数初值 N个CLK脉冲宽度。

8254工作于方式2时,若计数值为 N时,每输入N-1个 CLK脉冲,则输出一个负脉冲。

8254工作于方式3时,当计数值为一奇数时,则输出信号的低电平比高电平持续时间少一个CLK周期。

8254 作于方式3时,方波的重复周期是计数初值N个脉冲之和。

习以及在印刷领域的应用产生重大的影响,并会在以后的学习生活或工作中得到更广泛的应用。

相关文档
最新文档