“微机原理与系统设计”课程大作业

合集下载

微机原理程序设计大作业-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中。

微机原理大作业

微机原理大作业

大作业2:8086微机系统设计,具体要求如下:1、8086工作在最小方式。

2、工作时钟频率为:5MHz。

3、系统地址总线形成用74LS373。

系统数据总线形成用74LS245。

4、外部扩充设计16KB程序存储器,芯片选用Intel2764,首地址从FC000H开始;外部扩充设计16KB数据存储器,芯片选用Intel6264,首地址从00000H开始。

5、外部扩充设计A/D电路,芯片选用ADC0809(或其他芯片);外部扩充设计D/A 电路,芯片选用DAC0832(或其他芯片)。

6、系统配置1片8255A可编程并行接口和1片8254/8253可编程定时器。

7、输入设备为4×5矩阵非编码键盘,输出设备为4位数码管显示器。

键盘与显示器接口芯片可选8255A或Intel8279或ZLG7289。

8、所有端口地址有自己分配,译码器选用74LS138。

9、电路设计在protel DXP或Altium Designer下完成。

10、电路仿真软件选用proteus。

大作业1:(上机题)编写程序实现下列5项功能,通过从键盘输入1~5进行菜单式选择:(1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。

用户输入由英文大小写字母或数字0~9组成的字符串(以回车结束),变换后按下列格式在屏幕上显示:<原字符串>例如:abcdgyt0092<新字符串> ABCDGYT0092按任一键重做;按Esc键返回主菜单。

(2)按数字键“2”,完成在字符串中找最大值。

用户输入由英文大小写字母或数字0~9组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示:<原字符串> The maximum is <最大值>.按任一键重做;按Esc键返回主菜单。

(3)按数字键“3”,完成输入数据组的排序。

用户输入一组十进制数值(小于255),然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示:<原数值串><新数值串>按任一键重做;按Esc键返回主菜单。

微机原理大作业计时系统

微机原理大作业计时系统

data segment ;定义数据段buff1 db 0 ;buff2 db 0 ;用来判断笑脸模式的输出方式buff3 db 0 ;line1 db 2,2,1,1,1,1,'$'line2 db 1,1,2,2,1,1,'$' ;line3 db 1,1,1,1,2,2,'$' ;笑脸内容3line4 db 3,3,6,6,6,6,'$' ;黑红桃1line5 db 6,6,3,3,6,6,'$' ;黑红桃2line6 db 6,6,6,6,3,3,'$' ;黑红桃3str1 db 'Today is:<' ;输出日期前的提示字符串str2 db 2 dup(0),'/' ;存放月份str3 db 2 dup(0),'/' ;存放日期str4 db 4 dup(0),'>$' ;存放年份str5 db 2 dup(0),':' ;存放小时str6 db 2 dup(0),':' ;存放分钟str7 db 2 dup(0),'$' ;存放秒钟str8 db 'Now the time is:$' ;输出时间前的提示字符串month db 0 ;当前月的缓存区域day db 0 ;当前日的缓存区域year dw 0 ;当前年的缓存区域hour db 0 ;当前小时的缓存区域hour2 db 0 ;刚开始计时时所提取的小时信息(固定)hour3 db 0 ;缓存当前小时与固定小时之间的差值,即缓存hour-hour2的值minute db 0 ;当前分钟的缓存区域minute2 db 0 ;刚开始计时时所提取的分钟信息(固定)minute3 db 0 ;缓存当前分钟与固定分钟之间的差值,即缓存minute-minute2的值second db 0 ;当前秒钟的缓存区域second2 db 0 ;刚开始计时时所提取的秒钟信息(固定)second3 db 0 ;缓存当前秒钟与固定秒钟之间的差值,即缓存second-second2的值time db '00:00:00$' ;计时信息的ASCII格式的字符串存放空间sen1 db 'Press S to Start $' ;需要输出的提示信息sen2 db 'Press R to Restart$' ;需要输出的提示信息sen3 db 'Press C to Close $' ;需要输出的提示信息sen4 db '07503$' ;需要输出的提示信息sen5 db '071508$' ;需要输出的提示信息sen6 db 'ShenXun$' ;需要输出的提示信息sen7 db 'Press E to Exit $' ;需要输出的提示信息sen9 db '********Enjoy Every Minute*****From Zero To Hero********$' ;需要输出的提示信息tank db ' |',0ah,0dh db ' __\--__|_',0ah,0dhdb ' [/ ',04,04,'02 ___|',0ah,0dhdb ' _____\______|/-----.',0ah,0dhdb ' /____________________| ',0ah,0dhdb ' / ',0ah,0dhdb ' ~~~~~~~~~~~~~~~~~ ',0ah,0dhdb ' -<-<-<@',0ah,0dhdb ' -<-<@--<-<-<@--<-<-<@',0ah,0dh,0ah,0dhdb ' Power of Tank VS Beauty of Flower!!!','$';待输出的坦克及一些其他信息frame1 db 14,26 dup(0),14,'$' ;frame2 db 14,26 dup(0),14,'$' ;frame3 db 14,26 dup(0),14,'$' ;待data endsstack segmentstap1 db 100h dup(0)stack endscode segment publicassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax ;将data的段基址赋给dsmov ax,stackmov ss,ax ;将code的段基址赋给ssjmp begin ;跳转到beginclear macro x,y,z,w,t,s ;清屏宏:向上滚屏mov al,t ;t为滚动行数mov ch,x ;x左上角行坐标mov cl,y ;y左上角列坐标mov dh,z ;z右下角行坐标mov dl,w ;w右下角列坐标mov bh,s ;s为颜色设置mov ah,6hint 10hendmgettime macro ;定义取时间的宏mov ah,2chint 21hendmgetdate macro ;定义取日期的宏mov ah,2ahint 21hendmdisp macro x ;显示字符串的宏mov dx,offset xmov ah,09hint 21hendmpoint macro x,y ;光标位置置于x行,y列的宏mov dh,xmov dl,ymov bh,0mov ah,02hint 10hendmnum2asc proc ;asc码转换cmp ax,10 ;jl next1mov di,10next: xor dx,dxdiv diadd dx,'0'dec bxmov [bx],dlor ax,axjnz nextjmp exitnext1: add al,30hdec bxmov [bx],almov al,'0'dec bxmov [bx],alexit: retnum2asc endptransf macro x,y ;定义一个把提取到的月,日,时分秒都转换成asc数字并且赋给各自数组的宏mov bx,offset x ;得到末尾地址,是指针指向最后一个数字区域的后面位置xor ax,ax ;将ax清零mov al,byte ptr y ;将y型数据(提取到的数据)放到al当中call num2asc ;应用num2asc过程来进行数据转换endmbegin: clear 0,0,24,79,0,09h ;全屏清屏,背黑,前蓝高亮clear 5,26,9,54,5,0ah ;部分屏幕清屏,背黑,前绿高亮point 6,26 ;调用光标宏,把光标位置设置在6,26(上一步清掉的屏幕内)disp frame1 ;调用显示功能显示frame1point 7,26 ; .disp frame2 ; .point 8,26 ; .disp frame3 ;到此显示完框架point 3,25 ;把光标位置设置在3,25disp str8 ;point 1,12 ;把光标位置设置在1,12disp sen9 ;point 2,30 ;把光标位置设置在2,30getdatemov byte ptr month,dh ;把月份存入month变量mov byte ptr day,dl ;把日期存入day变量mov word ptr year,cx ;把年份存入year变量mov bx,offset str2+2 ;bx指向str2最后xor ax,ax ;ax清零mov al,byte ptr month ;把month中的数据读入al中call num2asc ;调用num2sac子程序mov bx,offset str3+2 ;bx指向str3最后xor ax,ax ;ax清零mov al,byte ptr day ;把day中的数据读入al中call num2asc ;调用num2sac子程序mov bx,offset str4+4 ;bx指向str4最后mov ax,word ptr year ;把year中的数据读入al中call num2asc ;调用num2sac子程序disp str1 ;显示从str1开始的字符,即显示日期point 6,30 ;把光标位置设置在6,30disp sen1 ;显示提示字符point 7,30 ;把光标位置设置在7,30disp sen7 ;显示提示字符begin1: gettime ;取时间mov byte ptr hour,ch ;把小时存入hour变量mov byte ptr minute,cl ;把分钟存入minute变量mov byte ptr second,dh ;把秒钟存入second变量mov bx,offset str5+2 ;bx指向str5最后xor ax,ax ;ax清零mov al,byte ptr hour ;把hour中的数据读入al中call num2asc ;调用num2sac子程序mov bx,offset str6+2 ;bx指向str6最后xor ax,ax ;ax清零mov al,byte ptr minute ;把minute中的数据读入al中call num2asc ;调用num2sac子程序mov bx,offset str7+2 ;bx指向str7最后mov al,byte ptr second ;把second中的数据读入al中call num2asc ;调用num2sac子程序point 3,43 ;把光标位置设置在3,43disp str5 ;把str5的内容显示出来point 11,35 ;把光标位置设置在11,35mov si,offset buff3 ;把buff3的偏移量给sicmp byte ptr [si],01h ;判断当前buff3里面的值是否为1je color ;是就跳转colorcmp byte ptr [si],02h ;判断当前buff3里面的值是否为2je color1 ;是就跳转color1cmp byte ptr [si],03h ;判断当前buff3里面的值是否为3je color20 ;是就跳转color20cmp byte ptr [si],04h ;判断当前buff3里面的值是否为4je color30 ;是就跳转color30clear 11,0,24,79,14,0ch ;清屏,从11行起的下面全部屏幕,背黑前红disp sen4 ;显示班级point 12,0 ;把光标位置设置在12,0disp tank ;显示tank图案inc buff3 ;buff3自增1jmp continuecolor: clear 11,0,24,79,14,0dh ;清屏,从11行起的下面全部屏幕,背黑前绛disp sen5 ;显示学号point 12,0 ;把光标位置设置在12,0disp tank ;显示tank图案inc buff3 ;buff3自增1jmp continuecolor20:jmp color2 ;跳转长度有限,专门设置的中转跳转站color30:jmp color3 ;跳转长度有限,专门设置的中转跳转站color1: clear 11,0,24,79,14,0ah ;清屏,从11行起的下面全部屏幕,背黑前绿disp sen6 ;显示姓名point 12,0 ;把光标位置设置在12,0disp tank ;显示tank图案inc buff3 ;buff3自增1jmp continuecolor2: clear 11,0,24,79,14,0fh ;清屏,从11行起的下面全部屏幕,背黑前灰disp sen6 ;显示姓名point 12,0 ;把光标位置设置在12,0disp tank ;显示tank图案inc buff3 ;buff3自增1jmp continuecolor3: clear 11,0,24,79,14,0eh ;清屏,从11行起的下面全部屏幕,背黑前褐disp sen6 ;显示姓名point 12,0 ;把光标位置设置在12,0disp tank ;显示tank图案mov byte ptr buff3,0h ;buff3清零continue:mov si,offset buff1 ;把buff1的偏移量给sicmp byte ptr [si],01 ;判断[si],也就是Buff1里面的数据是否为1je timing2 ;为1的话继续计时mov ah,1 ;判断是否有键盘输入的程序int 16hjnz timing1 ;如果有的话跳转到timing1mov si,offset buff2cmp byte ptr [si],0 ;判断buff2的值是否为0je l3cmp byte ptr [si],1 ;判断buff2的值是否为1je l4point 4,37disp line6mov byte ptr [si],0h ;buff2中数据清零jmp g2l3: point 4,37disp line4inc byte ptr [si] ;buff2自增1jmp g2l4: point 4,37disp line5inc byte ptr [si] ;buff2自增1g2:jug1: gettime ;取时间mov al,byte ptr second ;cmp al,dh ;判断秒有没有变化je jug1 ;不变化一直循环,直至变化jmp begin1 ;返回begin1,继续取时间显示timing1:mov ah,8 ;读取键盘输入的ASCII值到al里面int 21hcmp al,'e' ;输入的是e,则退出程序je endicmp al,'E' ;E也退出程序je endicmp al,'s' ;输入的是s,则开始计时程序je zero0cmp al,'S' ;S开始计时je zero0jmp begin1 ;如果输入不满足要求程序继续循环timing2:point 6,30 ;计时程序开始,定光标位置disp sen2 ;显示提示字符point 8,30 ;disp sen3 ;显示提示字符mov si,offset buff2 ;从这一句到l2结束,即273行,意在输出变化的黑红桃cmp byte ptr [si],0 ;判断buff2的值是否为0je l1cmp byte ptr [si],1 ;判断buff2的值是否为1je l2point 4,37disp line3mov byte ptr [si],0hjmp g3l1: point 4,37disp line1inc byte ptr [si]jmp g3endi: jmp endingl2: point 4,37disp line2inc byte ptr [si] ;以上输出不在赘述,算法与前面输出变化的笑脸一样jmp g3zero0: jmp zero ;中转g3: mov ah,1 ;判断有没有字符从键盘输入int 16hjnz g ;有的话跳转到g进行判断jmp g1 ;没有的话掠过到g1g: mov ah,8 ;读取键盘输入的ASCII值到al里面int 21hcmp al,'e'je endincmp al,'E'cmp al,'r'je zero0cmp al,'R'je zero0cmp al,'c'je cancel1cmp al,'C'je cancel1g1: gettimemov byte ptr hour,ch ;把小时存入hour变量mov byte ptr minute,cl ;把分钟存入minute变量mov byte ptr second,dh ;把秒钟存入second变量mov ah,byte ptr second ;sub ah,byte ptr second2 ;求新提取的秒与之前“固定”的值做差值,并将差值赋给ah中jge c1 ;差值大于等于0则跳转到c1dec byte ptr minute ;提取的分钟减一,实际为被借了一位add ah,60 ;调整负数秒为正jmp c1endin: jmp ending ;中转cancel1:jmp cancel ;中转c1: mov byte ptr second3,ah ;将差值保存起来mov ah,byte ptr minutesub ah,byte ptr minute2 ;求分钟的差值jge c2dec byte ptr hour ;若为负,向hour借位add ah,60 ;负数修正c2: mov minute3,ahmov ah,byte ptr hoursub ah,byte ptr hour2jge c3add ah,24c3: mov hour3,ahtransf time+2,hour3 ;asc码转换,并放到指定位置transf time+5,minute3 ;asc码转换,并放到指定位置transf time+8,second3 ;asc码转换,并放到指定位置point 9,36 ;指定光标位置disp time ;输出显示计时mov byte ptr buff1,01hjug: gettime ;判断秒有无变化的延时,与jug1一样mov al,byte ptr secondje jugjmp begin1mov ah,01 ;等待键盘输入,使屏幕等待int 21hjmp endingcancel: mov si,offset buff1 ;下面的语句键入c后的清屏并显示需要的提示符mov byte ptr [si],00hclear 9,35,9,45,1,09hpoint 6,30disp sen1point 7,30disp sen7clear 8,28,8,50,1,0ahjmp beginzero: gettimemov byte ptr hour2,ch ;把采集好的小时数赋给hour2的字节储存空间mov byte ptr minute2,cl ;同理把分钟数据给minute2mov byte ptr second2,dh ;把秒数据给second2mov byte ptr buff1,01hjmp begin1ending: mov ah,4chint 21hcode endsend start。

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

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

东北大学接口技术报告步进电机控制系统学院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. 教学内容与教材章节相对应,确保学生能够结合教材深入理解课程内容。

微机原理与系统设计

微机原理与系统设计

《微机原理与系统设计》作业2
1.三态逻辑电路输出信号的三个状态是、和。

2.在8086的基本读总线周期中,在状态开始输出有效的ALE信号;在状态开始
输出低电平的RD信号,相应的DEN为电平,DT/R为电平;引脚AD15~AD0上在状态期间给出地址信息,在状态完成数据的读入。

3.RESET信号在至少保持4个时钟周期的电平时才有效,该信号结束后,CPU内部
的CS为,IP为,程序从地址开始执行。

4.在构成8086最小系统总线时,地址锁存器74LS373的锁存信号LE应接CPU的信
号,输出允许端OE应接;数据收发器74LS245的方向控制端DIR应接信号,输出允许端G应接信号。

5.CPU在状态开始检查READY信号,电平时有效,说明存储器或I/O端口准备
就绪,下一个时钟周期可进行数据的读写;否则,CPU可自动插入一个或几个,以延长总线周期,从而保证快速的CPU与慢速的存储器或I/O端口之间协调地进行数据传送。

6.8086最大系统的系统总线结构较最小系统的系统总线结构多一个芯片。

7.如果8086/8088的CLK输入是4MHz,那么一个总线周期是。

8.在8086系统总线结构中,为什么要加锁存器?
9.利用常用芯片74LS373构成8086系统的地址总线,74LS245作为总线收发器构成数据总
线,画出8086最小方式系统总线形成电路。

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-每个路口都有人行指示灯:红,绿3-倒计时显示:两位数码管4-使用pc-xt总线,定时器5-设计硬件电路,列写掌控规律,软件流程。

2.设计方案本方案通过采用pc-xt总线,定时器,20个共阴极led灯管,2片8255芯片与74ls138译码器,加上2个与门,以及16个led共阴极数码管实现题目给定的功能。

功能详述:并使东南西北四个路口的车行红绿黄灯,与人行道的红绿灯,同时实现如下功能:1-初始状态,四个路口全为红灯;2-东西路口车行指示灯红灯,东西路口人行指示灯绿灯,南北路口车行指示灯绿灯,南北路口人行指示灯红灯,延时3-东西路口车行指示灯黄灯闪光,东西路口人行指示灯红灯,南北路口车行指示灯绿灯,南北路口人行指示灯红灯,延时4-东西路口车行指示灯绿灯,东西路口人行指示灯红灯,南北路口车行指示灯红灯,南北路口人行指示灯绿灯,延时5-东西路口车行指示灯绿灯,东西路口人行指示灯红灯,南北路口车行指示灯黄灯闪烁,南北路口人行指示灯红灯,延时6-在各个交通灯按照上述逻辑循环转换期间,2十一位led数码管不间断计时进行倒计时,同时预备进行各个颜色交通灯的转换。

3.硬件电路如图所示由硬件电路分析:aen=0-非dma操作,可以使译码器参与译码输出有效的片选信号,故aen=0,取反后为1。

由于g为高电平有效率,g2a,g2b为高有效率,故a9=0;a8=0,aen=0并使g2a,g2b,g有效率。

由74ls138真值表可得输入CX600X-g1=1;g2a=g2b=0且挑选-c=b=a=1时,输入处为y0=y1=1,row后y1=y0=0,互连两个8255芯片的片挑选信号口cs。

由于cs口为低电平有效率,故两片8255与cpu及pc-xt总线顺利完成相连接故82551-交通灯处:掌控口地址:0011111111→0x0ffc口地址:0011111110→0x0feb口地址:0011111101→0x0fda口地址:0011111100→0x0fca,b,c输入,方式0,则8255方式掌控字为10000000=80h82552-倒计时数码管处:对共阴极led字形编码如下-0-3fh1-06h2-5bh3-4fh4-66h5-6dh6-7dh7-07h8-7fh9-6fh掌控口地址:0011111011→0x0fba口地址:0011111010→0x0f8b口地址:0011111001→0x0f9a,b输出,方式0,8255方式控制字为10000000=80h4.掌控规律1-对于交通灯的控制1.1-采用8255-1中的a,b端口的全部8十一位(包含pa0~7;pb0~7)引脚接线,接入led灯模拟交通灯,再利用c端口的低四位(pc0~3)接入led灯,至此完成四个路口20个(车行灯12+人行灯8)交通灯的接线与布置。

微机大作业实验报告 (1)

微机大作业实验报告 (1)

微机技术综合实验课程报告题目交通灯控制设计学生姓名李松阳张磊学号***********/68院系信息与控制学院专业自动化指导教师陈逸菲二OO一三年十二月二十七日目录交通灯控制设计--------------------------------------------------------------1 预期功能------------------------------------------------------------------------------------------------------1 设计方案------------------------------------------------------------------------------------------------------1 硬件电路设计------------------------------------------------------------------------------------------------2 软件设计------------------------------------------------------------------------------------------------------2 仿真结果------------------------------------------------------------------------------------------------------6 小结------------------------------------------------------------------------------------------------------------8 参考文献------------------------------------------------------------------------------------------------------8交通灯控制设计李松阳张磊南京信息工程大学自动化系南京 210044摘要:随着社会经济的发展,城市交通问题越来越引起人们的关注.人、车、路三者关系的和谐,已成为交通治理部分须要解决的主要问题之一.城市交通节制系统是用于城市交通数据监测、交通讯号灯把持与交通劝导的盘算机综合治理体系,它是现代城市交通监控指挥体系中最主要的组成部分.随着城市灵活车量的不断增添,很多大城市如北京、上海、南京等呈现了交通超负荷运行的情形,因此,自80年代后期,这些城市纷纭修建城市高速道路,在高速途径建设完成的初期,它们也曾有效地改良了交通状态.然而,随着交通量的快速增加和缺少对高速道路的系统研讨和掌握,高速道路没有充足施展出预期的作用.而城市高速道路在结构上的特色,也决议了城市高速途径的交通状态必定受高速道路与普通途径耦合处交通状态的制约.所以,如何采取适合的控制方式,最大限度应用好消耗巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地域的交通拥堵状况,越来越成为交通运输治理和城市计划部分亟待解决的重要问题.为此,本文就城乡交通灯模仿控制系统的电路原理、设计盘算和试验调试等问题来进行具体剖析讨论. 本设计以proteus仿真软件为载体,结合,8086芯片、8255芯片、8253芯片、74LS138芯片以及7段数码管等的功能,用汇编语言编程实现了十字路口交通灯的模拟实验。

微机原理作业及答案

微机原理作业及答案
PUSH AX PUSH DX MOV AX, BUF MOV DX, BUF+2 MOV CX, 32 LP: SHL AX, __ 1 ADC BX, 0
LP LOOP __
MOV BYTE PTR SRLT, ___ BL
POP DX ____ POP AX ___
RET XHZY ENDP
1 RCL DX,__
一、二、三、四章
作业
第一章 作业
1、简述微型计算机的硬件系统结构,并说明其主要功能。 2、试利用一个字节的字长,将十进制-115转换为相应的二 进制的原码、反码和补码。 [解]: (-115)原=(11110011)2 (-115)反=(10001100) (-115)补=(10001101) 3、已知[X]补=1100111,则[X]原= , [2X]补= ,并判断结果 是否溢出。 [解]:题目没有特殊说明,将最高为(第六位作为符号位) [X]反=[X]补-1=1100110,则[X]原=1011001 [2X]补=[X]补+ [X]补=1100111+1100111=1 1001110 C6· C5=1· 1=0,不溢出 另外,可以补齐第七位为0或者1,再进行计算获得。
第三章 作业
1、8086/8088操作数是从哪里来的?
答:来源有3种:立即数、寄存器、存储器操作数 指令中直接给出参加操作数; 参与操作的数存放在CPU的某个寄存器中; 参与操作的数存放在内存单元中,需要寻找相应的物理地址。 2、指出下列指令的错误 1)MOV AX, [SI][DI] 2) MOV [BX],[SI] 3) ADD BYTE, PTR[BX] (不能同时使用两个变址寄存器) (原操作数和目的操作数不能同时为存储器)
第三章 作业

西安电子科技大学微机原理大作业

西安电子科技大学微机原理大作业

西安电子科技大学微机原理大作业第一次上机一、实验目的1. 熟练掌握8086/8088的各种寻址方式及应用。

2.掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础二、实验仪器586微机 1台三、实验内容1.关于数据的寻址方式练习8086/8088 提供多种方式实现操作数寻址,大体可分为7种:a. 立即寻址b. 寄存器寻址c. 直接寻址d. 寄存器间接寻址e. 寄存器相对寻址f. 基址变址寻址g. 基址变址且相对寻址掌握8086/8088的这些寻址方式,是学习汇编语言编程的关键。

指令SRC 寻址方式SRC的地址AX 推算值AX 实际值MOV AX, CX寄存器寻址0005 0005 MOV AX, 500H 立即寻址0500 0500 MOV AX, TABLE 直接寻址1541:0004 A5A 4 A5A 4MOV AX, ES:[BX] 寄存器间接寻址 1542:0004 C5C 4 C5C4MOV AX, [BX+05H] 寄存器相对寻址 1541:0009 AAA 9 AAA 9 MOV AX,寄存器相153FB8B B8B7 MOV AX, TABLE [BX] 寄存器相对寻址 1541:0008 A9A 8 A9A8MOV AX, 07H [BX] 寄存器相对寻址 1541:000B ACA B ACA BMOV AX, [BP]寄存器间接寻址 153F :0003 B4B 3 B4B 3 MOV AX, TABLE [BP] 寄存器相对寻址 1541:0007 A8A 7 A8A 7 MOV AX, 08H [BP] 寄存器相对寻址 153F :000B BCB B BCB B MOV AX, [BP+06H] 寄存器相对寻址 153F :0009 BAB 9 BAB 9 MOV AX,寄存器相1541A7A A7A6MOV AX, [BP]+05H 寄存器相对寻址153F:0008B9B8B9B8MOV AX, ES: [SI+03H] 寄存器相对寻址1542:0005C6C5C6C5MOV AX, [DI+06H] 寄存器相对寻址1541:0007A8A7A8A7MOV AX, [DI]+05H 寄存器相对寻址1541:0006A7A6A7A6MOV AX, TABLE [SI] 寄存器相对寻址1541:0006A7A6A7A6MOV AX, [SI] 寄存器间接寻址1541:0002A3A2A3A2MOV AX, TABLE 寄存器相1541A6A A6A[DI] 对寻址:00055 5MOV AX, [SI]+05H 寄存器相对寻址1541:0007A8A7A8A7MOV AX, [BX] [DI+01H] 基址变址且相对寻址1541:0006A7A6A7A6MOV AX, [BX] [SI]+03H 基址变址且相对寻址1541:0009AAA9AAA9MOV AX, TABLE [BX] [SI] 基址变址且相对寻址1541:000AABAAABAAMOV AX, ES:[BX] [DI] 基址变址寻址1542:0005C6C5C6C5MOV AX, [BP] [DI+02H] 基址变址且相对寻址153F:0006B7B6B7B6MOV AX, TABLE 基址变址1541A9A A9A[BP] [DI] 且相对寻址:00088 8MOV AX, ES:[BP] [SI] 基址变址寻址1542:0005C6C5C6C5MOV AX, [BP] [SI+05H] 基址变址且相对寻址153F:000ABBBABBBAMOV AX, 03H [BP] [DI] 基址变址且相对寻址153F:0007B8B7B8B7MOV AX, [BP] [SI] 基址变址寻址153F:0005B6B5B6B5MOV AX, [BP+02H] [DI+03H] 基址变址且相对寻址153F:0009BAB9BAB9MOV AX, TABLE [BP+02H][DI+03H] 基址变址且相对寻址1541:000DAEADAEAD第二次上机一、实验目的1. 熟练掌握汇编语言程序设计的方法及上机步骤。

微机原理及其应用大作业(3个问题)—基于emu8086编程

微机原理及其应用大作业(3个问题)—基于emu8086编程
MOV AX,DATA MOV DS,AX LEA DX,S;输入 MOV AH,0AH INT 21H
MOV BX,29 MOV CX,BX;设置循环次数 XH1: MOV SI,2;变址寻址 XH2: MOV AL,S[SI] CMP AL,S[SI+1] JBE NEXT;前者<=后者,转移后继续循环
› 试求出各班队员的平均成绩与最好成绩,并求出两班最好成 绩的和。
› 试用子程序法,编制该程序的流程图,并编写出源程序。 (3分)
开始
输入两 班成绩
调用平均 值子程序
调用最大 值子程序
求两班最 好成绩之

结束
DATA SEGMENT
A
DB 45,42,50,59,46,52
AAV DW 0
AMAX DB 0
DATA SEGMENT DAT DB 95,68,68,90,89,66,85,74,78,46,99,79 COUNT DB 5 DUP(0)
DATA ENDS COSEG SEGMENT
ASSUME CS:COSEG,DS:DATA START:MOV AX,DATA
MOV DS,AX MOV CX,12;循环控制12次 LEA BX,DAT;设置缓冲区指针 XOR DL,DL;统计计数器清零 BJ: MOV AL,[BX];取数据 CMP AL,90;作比较 JGE XB1;>=90,转移 CMP AL,80 JGE XB2;>=80,转移 CMP AL,70 JGE XB3;>=70,转移 CMP AL,60 JGE XB4;>=60,转移 JMP XB5;<60,转移
XB1:INC BX INC COUNT LOOP BJ JMP LAST;循环结束后转移至最后

微机原理课程大作业

微机原理课程大作业
DATA SEGMENT
ORG 100H
X DW 4
Y DW 5
Z DW 2
ORG 200H
RESULT DD ?
DATA ENDS
STACK SEGMENT STACK 'STACK'
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
ORG 2000H
MAIN PROC FAR
MOV SP,0FF4EH;设置堆栈指针SP,对应我的班级23班,班内序号16
PUSH DS
XOR AX,AX
PUSH AX;设置返回DOS的命令,和RET配合使用返回DOS
MOV BX,DATA
MOV DS,BX
PUSH Z
PUSH Y
PUSH X
CALL MULSUB;调用子程序计算
MOV WORD PTR RESULT,AX
MOV WORD PTR RESULT+2,DX;将计算结果存储在RESULT中
RET
MAIN ENDP
ORG 1000H
MULSUBPROC NEAR
PUSH BP
MOV BP, SP
MOV AX, [BP+4]
MOV DX, [BP+6]
MOV CX, [BP+8]
作业要求:
1.阅读前述整理出的进行 运算的MULSUB子程序,回答下述问题:
(1)该子程序的入口参数(即变量x, y及z)是通过堆栈传递的,试问:变量z的值在子程序中是如何获得的(通过那条指令)?
答:MOV CX, [BP+8]

微机原理期末大作业

微机原理期末大作业

微机原理期末大作业——iPad设计一设计思路通过一个学期对微型计算机原理的学习,我初步掌握了微型计算机的内部构造与工作原理,学会了一些微型计算机设计方法,也对微型计算机设计产生了兴趣。

我利用本学期所学的关于微处理器及其接口设备,以及微处理器的编程语言相关知识,并利用网络资源自己设计了一个iPad 平板电脑模型。

(2010年1月27日,在美国旧金山欧巴布也那艺术中心所举行的苹果公司发布会上,传闻已久的平板电脑——iPad由首席执行官史蒂夫·乔布斯亲自发布。

iPad定位介于苹果的智能手机iPhone和笔记本电脑产品之间,通体只有四个按键,与iPhone布局一样,提供浏览互联网、收发电子邮件、观看电子书、播放音频或视频等功能。

)二设计要求要求设计出的模型理论上具有与真实iPad相仿的功能,但对使用的器材不做限制。

设计应有一个微型计算机所必需的部件,设计应构成一套完整的简单微型计算机系统。

并能够模仿真实iPad,具有显示器、触摸输入、扬声器输出、摄像头输入等功能器件。

三设计内容1、硬件系统主板系统主板采用飞思卡尔(Freescale)i.MX51 (Cortex-A8, 800MHz)的小尺寸核心主板(53mm*97mm),板载WiFi,支持3D加速,支持720P视频播放,支持两路micro Sd卡,支持USB OTG。

内部USB host 接口和UART接口,可扩展3G模块和蓝牙模块。

结构简洁,BOM成本低,量产方便。

性能参数接口描述本方案基于飞思卡尔(Freescale)i.MX51 (Cortex-A8,800MHz)的小尺寸核心主板(53mm*97mm),板载WiFi,支持3D加速,支持720P视频播放,支持两路micro Sd卡,支持USB OTG。

内部USB host接口和UART接口,可扩展3G模块和蓝牙模块。

规格参数触屏系统目前主要有几种类型的触摸屏,它们分别是:电阻式(双层),表面电容式和感应电容式,表面声波式,红外式,以及弯曲波式、有源数字转换器式和光学成像式。

微机原理课程设计题1

微机原理课程设计题1

微机原理课程设计题1第一篇:微机原理课程设计题1微机原理课程设计题目——软件部分软件程序设计两个班的同学一起选,每人一个题目,不能重复。

题目1、根据键盘输入的一个数字显示相应的数据螺旋方阵。

如输入4,则显示: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 共需要显示 4^2=16 个数字。

要求:1、根据键盘输入的数字(3-20),显示相应的数据方阵。

2、画出设计思路流程图,编写相应程序。

题目2 通过键盘输入字母,然后显示相应的图形。

要求:输入L,之后再输入两个点的坐标值,显示一段直线;输入 R,再输入两个点的坐标值,显示一个矩形框。

题目3 在屏幕上接收一串带数字、字母及其它字符的字符串,然后统计其中数字、字母的个数,并显示出来。

题目4 编写一个汇编程序,将键盘输入的小写字母用大写显示出来.若输入的是非字符,显示NON CHAR。

题目5 编程序实现十进制数与十六进制数之间的相互转换。

1、从键盘输入一个十进制数,转换成十六进制数,显示出来。

要求:需要检测输入一个规范的十进制数。

2、键盘输入一个十六进制数,转换成十进制数,显示出来。

要求:需要检测输入一个规范的十六进制数。

题目6 简易信息检索系统。

在数据区定义 msg0-msg9 共十条信息,然后从键盘接收 0-9 的数字,显示相应的信息。

题目7 人名排序程序。

从键盘接收十个人名,人名由四个字母构成。

按字母上升次序显示所输入的人名,每一个人名占一行。

题目8 在显示屏中央开一个窗口显示自已的名字(以拼音显示)。

要求:窗口的大小(行列的象素数,可由用户输入两个数字调整)题目9 计算字符长度提示输入字符串;输入任意字符串string,点击Enter结束输入;输出字符串string的长度;点击Enter程序退出。

题目10 字符串大小写字母相互转换(1)提示输入字符串;(2)输入任意字符串string,点击Enter结束输入;将字符串string中的大写字母转换为小写字母输出;点击Enter程序退出;(3)输入任意字符串string,点击Enter结束输入;将字符串string中的小写字母转换为大写字母输出;点击Enter程序退出。

微机原理与接口技术_大作业

微机原理与接口技术_大作业

课程设计报告课程:微机原理与接口技术题目:键盘扫描实验班级:学号:姓名:日期:一、设计目的通过本次课程设计,掌握8255芯片使用方法和编程方法,理解所学的芯片的原理、内部结构等,从而提高对芯片的综合运用能力,进一步掌握微机系统的软件、硬件设计的方法、设计步骤,掌握微机系统与接口扩展电路的设计方法,做到理论联系实际,提高动手能力和分析问题、解决问题的能力,理论联系实际,实现由学习知识到应用知识的初步过渡。

二、设计要求利用8255可编程并行口做一个键盘扫描实验,每一个键对应一个ASCII码,并实现在数码管上同一位显示。

三、设计思想8255是一种可编程并行I/O接口芯片,具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位,可与外设并行进行数据交换。

A口和B口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。

把8255并口和键盘,组成一个键盘装置,通过CPU对8255的控制最总达到键扫的目的,每一个键对应一个ASCII 码字符,通过8255的输入和输出,最终显示在屏幕上。

四、原理图1.芯片接线2.8255实验连线:3.按键ASCII码:A B1 C0 DF E五、程序框架1.主程序:2.键盘扫描程序:3.显示程序:六、程序代码;****************根据查看端口资源修改下列符号值*******************IOY0 EQU 9C00H ;片选IOY0对应的端口始地址;*****************************************************************MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$'DTABLE DB 3FH,77H,7CH,4FH,06H,6DH,7DH,39H,3FH,6FH,77H,5EH,39H,71H,79H,71H TT DB 0HDATA ENDSCODE SEGMENT ;数据段ASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV DX, OFFSET MESMOV AH, 09HINT 21HMOV DX, MY8255_MODE ;控制字寄存器MOV AL, 81HOUT DX, ALBEGIN: CALL CLEAR ;调用清屏函数CALL CCSCAN ;键扫函数JNZ GETKEY1 ;有键按下发生跳转CALL CLEARMOV DX, MY8255_A ;刷新MOV AL, 11011111BOUT DX, ALMOV DX, MY8255_BMOV AL, TTOUT DX, ALMOV AH, 1INT 16HJZ BEGINQUIT: MOV AX, 4C00HINT 21HGETKEY1:MOV CH, 0FEH ;打开第一根列线MOV CL, 00H ;纪录打开的列线COLUM: MOV AL, CHMOV DX, MY8255_AOUT DX,AL ;把AL输给端口MOV DX, MY8255_C ;读入三行IN AL, DXL1: TEST AL,01H ;逻辑与判断行线开关 JNZ L2 ;关的跳第二行MOV AL,00HJMP KCODEL2: TEST AL,02HJNZ L3MOV AL,04HJMP KCODEL3: TEST AL,04HJNZ L4MOV AL,08HJMP KCODEL4: TEST AL,08HJNZ NEXTMOV AL,0CHKCODE: ADD AL,CL ;CL加入存储器对应数MOV CL,AL ;纪录ALYY: CALL CLEAR ;判断按键是否弹起CALL CCSCANCALL CLEARMOV DX,MY8255_A ;刷新MOV AL,11011111BOUT DX,ALMOV DX,MY8255_BMOV AL,TTOUT DX,ALJNE YY ;不为零有键按KON: CALL CLEARMOV AL,CLMOV BX,OFFSET DTABLE ;定义变量首地址AND AX,00FFHADD BX,AXMOV AL,[BX]MOV CL, ALMOV DX,MY8255_A ;A口控制列线和数码管MOV AL,11011111B ;关掉五个打开对应的一个OUT DX, ALMOV AL, CLMOV DX, MY8255_BOUT DX, ALMOV TT, ALJMP KERRNEXT: INC CLMOV AL, CHTEST AL,08H ;将AL和第三根列线比较JZ KERR ;真跳转ROL AL,1 ;不是第三根左移一顺序扫 MOV CH, ALJMP COLUMKERR: JMP BEGINCCSCAN PROC NEARMOV AL, 00H MOV DX, MY8255_AOUT DX, ALMOV DX, MY8255_CIN AL, DXNOT ALAND AL, 0FHRETCCSCAN ENDPCLEAR PROC NEARMOV DX, MY8255_BMOV AL, 00HOUT DX, ALRETCLEAR ENDP ;结束子程序CODE ENDSEND START。

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

“微机原理与系统设计”课程大作业
各位同学:
虽然课程还没有进行到足以完成下面的作业,但教材给你们提供了很好的帮助,只要自己自学一下,相信你们能够很好地完成作业,也可以锻练你们的能力,祝你们在非常时期,得到长足的进步。

一、《微机原理与接口技术》编程入门
一般来说,用户设计的程序包含三个段:堆栈段(STACK)、数据段(DATA)和代码段(CODE)。

如果使用的堆栈单元较少,则也可以不定义堆栈段,这时会使用操作系统所定义的堆栈段。

如图1所示(分号“;”之后的内容表示注释)。

图1 汇编语言程序结构
有了这种结构,用户编写程序时,只需要将要定义的变量填入DATA段,将编写的汇编语言程序填入CODE段,使程序设计有了清楚的结构。

参见教材p103 例4.2 。

二、随机数产生 计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。

伪随机数生成算法实际上是采用了"线性同余法”。

具体的计算如下:
()1*mod k k X A X C M -=+ 其中A,C,M 都是常数(一般会取质数)。

当C=0时,叫做乘同余法。

问题1:编写子程序RANDOM ,产生0~255之间的伪随机数;编写程序产生1000个随机数,并统计其概率分布图;运行3次,验证随机性。

提示:为了产生0~255之间的伪随机数,取M =256,A =19,C =37。

第一个数也需要具备随机性,我们可以利用INT 21H 的2CH 号功能(参见教材P384)获取本机系统时间,取DL 寄存器内容,作适当处理,使其在0~255之间。

随机数可以用于扑克牌的洗牌中。

每张扑克牌用一个字节表示,用低4位表示A ~K 用1~13表示,D5~D4表示花色:00~11分别表示方块、草花、红桃、黑桃;用D7~D6表示大小王,约定1000 0000B 表示大王,0100 0000B 表示小王。

洗牌之前将所有的牌按从小到大放在洗牌区(实际上是一块54字节的存储区域),然后经过p 次交换洗牌、q 次倒排洗牌、r 次块分割对插洗牌。

(1)交换洗牌:产生2个随机数(0~53,下同)n 、m ,将位置n 与m 的内容交换;(2)倒排洗牌:产生2个随机数n 、m ,设n<m ,将位置n 到m 的内容倒序排列;(3)块分割对插洗牌:产生2个随机数n 、m ,设n<m ,将位置n 到m 的内容移动到最后。

p 、q 、r 的取值可以通过试验确定。

问题2:设有4个人玩升级牌,设计子程序Shuffle 完成洗牌,设计程序完成发牌(底牌留6张),显示ABCD 各人手中牌和底牌,重复多次,验证洗牌的有效性。

进一步可以完成多副牌的洗牌和发牌。

题目有什么不妥之处,可以给我发Email :。

相关文档
最新文档