欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 汇编程序报告心得体会

汇编程序报告心得体会

时间:2018-01-14 20:37

汇编语言实验心得

一.实容1.DEBUG的启动及其基本命令的使2.内存数与寻址方式1)利用DEBUG程序中的“E”命令,将两个多字节数“12345678H“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2)分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

3.顺序程序设计X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。

试编写汇编语言程序完成以下功能:①计算表达式值(V–(X*Y+Z-720))\\\/X;②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。

4.分支程序设计1)设X,Y为字变量,假定不溢出,计算X=|X-Y|。

2)将NUM单元中的一位十六进制数(0~9,A~F),转换为对应的ASCII码值存入ASC单元。

3)已知字节变量X,编程求下列表达式即:1当x>0y=0当x=0-1当x<05.循环程序设计1)定义10个字节型带符号数,求其和。

2)在内存单元DATA中定义一个16位数,统计其16位中1的个数,存入内存的字单元COUNT。

3)定义10个字型无符号数,编写程序求其最小值。

6.子程序设计1)设计一个子程序,计算1+2+…+N,其中N为给定的正整数,且N小于100。

2)定义10个字型带符号数,编写子程序求其最大值和统计正数的个数。

3)从键盘接收4位十进制数,将其转换为十六进制数并显示。

二.实验心得上学期学习计算机组成原理的时候就对汇编有所了解,但通过这学期的学习,使我更加深入了

c语言实验报告心得

c语言实验心得:1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。

2、其他不频繁调用到和对运算速度要求不高的变量都放到xdata区。

3、常量放到code区,如字库、修正系数。

4、逻辑标志变量可以定义到bdata中。

在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。

这样可以大大降低内存占用空间。

定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。

5、data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。

当然静态局部变量除外,其内存使用方式与全局变量相同;6、确保程序中没有未调用的函数。

在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。

函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。

这一点Keil做得很愚蠢,但也没办法。

7、如果想节省data空间就必须用large模式。

将未定义内存位置的变量全放到xdata区。

当然最好对所有变量都要指定内存类型。

8、使用指针时,要指定指针指向的内存类型。

在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。

如指针p是指向data区,则应定义为: char data *p;。

还可指定指针本身的存放内存类型,如:char data * xdata p;。

其含义是指针p指向data区变量,而其本身存放在xdata区。

以前没搞过C51,大学时代跟单片机老师的时候也是捣鼓下汇编,现在重新搞单片机,因为手头资料不多,找到一些C51的程序,发现里面有这些关键字,不甚明了,没办法只好找了下,发现如下描述:从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。

与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。

在51系列中data,idata,xdata,pdata的区别data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。

idata是用类似C中的指针方式访问的。

汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好) xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。

这个比较特殊,而且C51好象有对此BUG,建议少用。

但也有他的优点,具体用法属于中级问题,这里不提。

三、有关单片机ALE引脚的问题 单片机不访问外部锁存器时ALE端有正脉冲信号输出,此频率约为时钟振荡频率的1\\\/6.每当访问外部数据存储器是,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲.这句话是不是有毛病.我觉得按这种说法,应该丢失3个ALE脉冲才对,我一直想不通是怎么回事,希望大虾们帮帮我.小弟感激涕零.答:其他所有指令每6个机器周期发出一个ALE,而MOVX指令占用12个机器周期只发出一个ALE 四、如何将一个INT型数据转换成2个CHAR型数据

经keil优化后,char1=int1\\\/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一样的。

五、在KEIL C51上仿真完了,怎样生成HEX文件去烧写

右键点项目中Target 1,选第二个,在OUTPUT中选中CREAT HEX 六、typedef 和 #define 有何不同?? typedef 和 #define 有何不同》》》 如typedef unsigned char UCHAR ;#define unsigned char UCHAR ;typedef命名一个新的数据类型,但实际上这个新的数据类型是已经存在的,只不过是定义了一个新的名字.#define只是一个标号的定义.你举的例子两者没有区别,但是#define还可以这样用#define MAX 100#define FUN(x) 100-(x)#define LABEL等等,这些情况下是不能用typedef定义的 七、请问如何设定KELC51的仿真工作频(时钟) 用右键点击左边的的target 1,然后在xtal一栏输入 八、不同模块怎样共享sbit变量,extern不行? 把SBIT定义单独放到一个.H中,每个模块都包含这个.h文件 九、C51中对于Px.x的访问必须自己定义吗

是的。

如sbit P17 = 0x97;即可定义对P1.7的访问 十、SWITCH( )语句中表达式不可以是位变量对吗

可以用位变量:#include#includevoid main(){bit flag;flag=0;switch(flag){case '0':{printf(0\\\ );break;}case '1':{printf(1\\\ );break;}default:break; }}bit 变量只有两种状态,if 语句足够啦,!!! 十一、const常数声明占不占内存 const 只是用来定义“常量”,所占用空间与你的定义有关,如:const code cstStr[] = {abc};占用代码空间;而如:const char data cstStr[] = {abc};当然占用内存空间。

另外,#define 之定义似乎不占用空间。

十二、philips的单片机P89C51RD+的扩展RAM在C51中如何使用

试一试将auxr.1清0,然后在c语言中直接声明xdata类型的变量 十三、BUG of Keil C51 程序中用如下语句:const unsigned char strArr[] = {数学};结果发现strArr[] 内容为 {0xCA,0xD1,0xA7},真奇怪

凡是有0xfd,则会通通不见了,所以只能手工输入内码了,例如 uchar strArr[]={0xCA,0xfd,0xd1,0xa7}(用Ultraedit会很方便)。

十四、Keil C51中如何实现代码优化

菜单Project下Option for target Simulator的C51.看到Code optimization了吗

十五、请教c的

和 ~ 符号有甚区别

是逻辑取反,~是按位取反。

十六、c51编程,读端口,还要不要先输出1

我怎么看到有的要,有的不要,请高手给讲讲,到底咋回事

谢了要输出1的,除非你能保证之前已经是1,而中间没有输出过其他值。

十七、当定时器1(T1)用于产生波特率时,P3^5还是否可以用作正常的I\\\/O口呢

p3.5完全可以当普通的io使用 十八、C51中 INT 转换为 2个CHAR

各位高手:C51中 INT 转换为 CHAR 如何转换诸如:X = LOW(Z);Y = HIGH(Z);答: x=(char)z;y=(char)(z>>8); 十九、如果我想使2EH的第7位置1的话,用位操作可以吗

现在对位操作指令我一些不太明白请各位多多指教:如 SETB 07H 表示的是20H.7置1,对吗

(我在一本书上是这么看到的)那么如果我想使2EH的第7位置1的话,象我举的这个例子怎么表示呢

谢谢

SETB 77Hsetb (2eh-20h)*8+7 20h-2fh每字节有8个可位操作(00h-7fh),其它RAM不可位直接操作 二十、char *addr=0xc000 和char xdata *addr=0xc000有何区别

char *addr=0xc000;char xdata *addr=0xc000;除了在内存中占用的字节不同外,还有别的区别吗?char *addr=0xc000; 是通用定义,指针变量 addr 可指向任何内存空间的值;char xdata *addr=0xc000; 指定该指针变量只能指向 xdata 中的值;后一种定义中该指针变量(addr)将少占用一个存储字节。

uchar xdata *addr=0xc000;指针指向外ram;如果:data uchar xdata *addr=0xc000;指针指向外ram但指针本身存在于内ram(data)中以此类推可以idata uchar xdata *addr=0xc000;pdata uchar xdata *addr=0xc000;data uchar idata *addr=0xa0;......... 二十一、while(p1_0)的执行时间

假设,P1_0为单片机P1口的第一脚,请问,while(P1_0){P1_0=0;}while(!P1_0){P1_0=1;}以上代码,在KEIL C中,需要多长时间,执行完。

能具体说明while(P1_0)的执行时间吗

仿真运行看看就知道了,我仿真了试了一下,约14个周期 二十二、怎样编写C51的watchdog程序

各位大虾,我用KEIL C51 编写了一个带外部开门狗的程序,可程序无法运行起来,经过查找,发现程序在经过C51编译后,在MAIN()函数的前部增加了一端初始化程序,等到进入主程序设置开门狗时,开门狗已经时间到,将我的程序复位了,请问我怎样才能修改这一端初始花程序,使他一运行,就设置开门狗

可以在startup.a51中加入看门狗刷新指令,当然用汇编,然后重新编译startup.a51,将他和你的程序连接即可。

新的startup.a51会自动代替系统默认的启动模块。

二十三、keil C51 怎样把修改的startup.a51 加到工程文件中 直接加入即可注意不要改动?STACK,?C_START,?C_STARTUP等符号。

startup.a51直接加入项目,不用修改也可。

可在内面自己修改汇编的一些限制或堆栈指针。

二十四、关于波特率的设置 我在设定串口波特率时发现一个问题:在晶体震荡器为11.0592MHz时,若设9600BPS的话,TH1=0XFD,TL1=0XFD,而要设19200BPS的话,TH1、TL1有否变化,如果没变,为什么

如果变了,又为什么

(因为我看书上俩个是一样的),希望大家点拨。

答:当电源控制寄存器(PCON)第BIT7(SMOD)为1时波特率加倍。

TH1和TL1的值不变. 二十五、如何在C中声明保留这部分RAM区不被C使用

我不知道在C源程序中怎么控制这个,但在汇编程序中加入下面一段就行:DSEG AT 20HAA: DS 10这样C51就不会占用20H--29H了或者在c51里这样定义:uchar data asm_buff[10] _at_ 0x20; 二十六、问浮点运算问题 我在用C51时发现它对传递浮点参数的个数有限制,请问:1)参数是以全局变量的形式传递的,请问以全局变量的形式传递的参数也有限制吗

2)这种传递浮点参数的限制有多少呢

3)float*float的结果是float类型还是double类型?能否直接赋值给float类型的变量

答:由于KEIL C51的参数传递是通过R0-R7来传递的,所以会有限制。

不过KEIL提供了一个编译参数,可以支持更多参数的传递。

具体的内容见KEIL的PDF文档。

我建议你把多个要传递的参数定义到指针或结构体中去,传递参数通过指针或结构进行,这样好一些。

第3个问题回答是YES,你自己试试不就知道了。

二十七、如何在某一个地址定义ram 用_at_ 命令,这样可以定位灵活一点的地址uchar xdata dis_buff[16] _at_ 0x6020 ;\\\/\\\/定位RAM将dis_buff[16]定位在0x6020开始的16个字节 二十八、keil c中,用什么函数可以得到奇偶校验位

例如32位数据,将四个字节相互异或后检查P即可,若耽心P被改变,可用内嵌汇编。

#include unsigned char parity(unsigned char x){x^=x;if(P)return(1);else return(0);}unsigned char parity2(unsigned int x){#pragma asmmov a,r7xrl ar6,a#pragma endasmif(P)return(1);else return(0);}

电路与电子技术学习心得或体会

第一部分:硬件一、 数字信号1、 TTL和带的TTL信号 (1、输出高电>2.4V,输出低电平<0.4V。

在下,一般输出高电平是3.5V,输出低电平是0.2V。

最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。

2,CMOS电平: 1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。

而且具有很宽的噪声容限。

3,电平转换电路: 因为TTL和COMS的高低电平的值不一样(ttl 5v<==>cmos 3.3v),所以互相连接时需要电平的转换:就是用两个电阻对电平分压,没有什么高深的东西。

哈哈 4,OC门,即集电极开路门电路,OD门,即漏极开路门电路,必须外界上拉电阻和电源才能将开关电平作为高低电平用。

否则它一般只作为开关大电压和大电流负载,所以又叫做驱动门电路。

5,TTL和COMS电路比较: 1)TTL电路是电流控制器件,而coms电路是电压控制器件。

2)TTL电路的速度快,传输延迟时间短(5-10ns),但是功耗大。

COMS电路的速度慢,传输延迟时间长(25-50ns),但功耗低。

COMS电路本身的功耗与输入信号的脉冲频率有关,频率越高,芯片集越热,这是正常现象。

3)COMS电路的锁定效应: COMS电路由于输入太大的电流,内部的电流急剧增大,除非切断电源,电流一直在增大。

这种效应就是锁定效应。

当产生锁定效应时,COMS的内部电流能达到40mA以上,很容易烧毁芯片。

防御措施: 1)在输入端和输出端加钳位电路,使输入和输出不超过不超过规定电压。

2)芯片的电源输入端加去耦电路,防止VDD端出现瞬间的高压。

3)在VDD和外电源之间加线流电阻,即使有大的电流也不让它进去。

4)当系统由几个电源分别供电时,开关要按下列顺序:开启时,先开启COMS电路得电源,再开启输入信号和负载的电源;关闭时,先关闭输入信号和负载的电源,再关闭COMS电路的电源。

6,COMS电路的使用注意事项 1)COMS电路时电压控制器件,它的输入总抗很大,对干扰信号的捕捉能力很强。

所以,不用的管脚不要悬空,要接上拉电阻或者下拉电阻,给它一个恒定的电平。

2)输入端接低内组的信号源时,要在输入端和信号源之间要串联限流电阻,使输入的电流限制在1mA之内。

3)当接长信号传输线时,在COMS电路端接匹配电阻。

4)当输入端接大电容时,应该在输入端和电容间接保护电阻。

电阻值为R=V0\\\/1mA.V0是外界电容上的电压。

5)COMS的输入电流超过1mA,就有可能烧坏COMS。

7,TTL门电路中输入端负载特性(输入端带电阻特殊情况的处理): 1)悬空时相当于输入端接高电平。

因为这时可以看作是输入端接一个无穷大的电阻。

2)在门电路输入端串联10K电阻后再输入低电平,输入端出呈现的是高电平而不是低电平。

因为由TTL门电路的输入端负载特性可知,只有在输入端接的串联电阻小于910欧时,它输入来的低电平信号才能被门电路识别出来,串联电阻再大的话输入端就一直呈现高电平。

这个一定要注意。

COMS门电路就不用考虑这些了。

8,TTL电路有集电极开路OC门,MOS管也有和集电极对应的漏极开路的OD门,它的输出就叫做开漏输出。

OC门在截止时有漏电流输出,那就是漏电流,为什么有漏电流呢

那是因为当三机管截止的时候,它的基极电流约等于0,但是并不是真正的为0,经过三极管的集电极的电流也就不是真正的 0,而是约0。

而这个就是漏电流。

开漏输出:OC门的输出就是开漏输出;OD门的输出也是开漏输出。

它可以吸收很大的电流,但是不能向外输出的电流。

所以,为了能输入和输出电流,它使用的时候要跟电源和上拉电阻一齐用。

OD门一般作为输出缓冲\\\/驱动器、电平转换器以及满足吸收大负载电流的需要。

9,什么叫做图腾柱,它与开漏电路有什么区别

TTL集成电路中,输出有接上拉三极管的输出叫做图腾柱输出,没有的叫做OC门。

因为TTL就是一个三级关,图腾柱也就是两个三级管推挽相连。

所以推挽就是图腾。

一般图腾式输出,高电平400UA,低电平8MA)2、 RS232和定义 一、RS-232-C RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(recommeded standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。

它规定连接电缆和机械、电气特性、信号功能及传送过程。

常用物理标准还有有EIA�RS-232-C、EIA�RS-422-A、EIA�RS-423A、EIA�RS-485。

这里只介绍EIA�RS-232-C(简称232,RS232)。

例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。

1.电气特性 EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。

在TxD和RxD上:逻辑1(MARK)=-3V~-15V 逻辑0(SPACE)=+3~+15V 在RTS、CTS、DSR、DTR和DCD等控制线上: 信号有效(接通,ON状态,正电压)=+3V~+15V 信号无效(断开,OFF状态,负电压)=-3V~-15V 以上规定说明了RS-323C标准对逻辑电平的定义。

对于数据(信息码):逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)V之间。

EIA-RS-232C与TTL转换:EIA-RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。

因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。

实现这种变换的方法可用分立元件,也可用集成电路芯片。

目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。

MAX232芯片可完成TTL←→EIA双向电平转换。

3、 RS485\\\/422(平衡信号)RS485采用差分信号负逻辑,+2V~+6V表示“0”,- 6V~- 2V表示“1”。

RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。

在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。

很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。

而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:(1)共模干扰问题: RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。

但人们往往忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。

当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。

(2)EMI问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。

由于PC机默认的只带有RS232接口,有两种方法可以得到PC上位机的RS485电路:(1)通过RS232\\\/RS485转换电路将PC机串口RS232信号转换成RS485信号,对于情况比较复杂的工业环境最好是选用防浪涌带隔离珊的产品。

(2)通过PCI多串口卡,可以直接选用输出信号为RS485类型的扩展卡。

RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。

实际上还有一根信号地线,共5根线。

由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。

即一个主设备(Master),其余为从设备(Salve),从设备之间不能通信,所以RS-422支持点对多的双向通信。

接收器输入阻抗为4k,故发端最大负载能力是10×4k+100Ω(终接电阻)。

RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON\\\/XOFF握手)或硬件方式(一对单独的双绞线)。

RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb\\\/s。

其平衡双绞线的长度与传输速率成反比,在 100kb\\\/s速率以下,才可能达到最大传输距离。

只有在很短的距离下才能获得最高速率传输。

一般100米长的双绞线上所能获得的最大传输速率仅为 1Mb\\\/s。

RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。

在矩距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。

终接电阻接在传输电缆的最远端。

4、 干接点信号二、 模拟信号视频1、 非平衡信号2、 平衡信号三、 芯片1、 封装2、 74073、 74044、 74005、 74LS5736、 ULN20037、 74LS2448、 74LS2409、 74LS24510、 74LS138\\\/23811、 CPLD(EPM7128)12、 116113、 max69114、 max485\\\/7517615、 mc148916、 mc148817、 ICL232\\\/max23218、 89C51四、 分立器件1、 封装2、 电阻:功耗和容值3、 电容1) 独石电容2) 瓷片电容3) 电解电容4、 电感5、 电源转换模块6、 接线端子7、 LED发光管8、 8字(共阳和共阴)9、 三极管2N555110、 蜂鸣器五、 单片机最小系统1、 单片机2、 看门狗和上电复位电路3、 晶振和瓷片电容六、 串行接口芯片1、 eeprom2、 串行I\\\/O接口芯片3、 串行AD、DA4、 串行LED驱动、max7129七、 电源设计1、 开关电源:器件的选择2、 线性电源:1) 变压器2) 桥3) 电解电容3、 电源的保护1) 桥的保护2) 单二极管保护八、 维修1、 电源2、 看门狗3、 信号九、 设计思路1、 电源:电压和电流2、 接口:串口、开关量输入、开关量输出3、 开关量信号输出调理1) TTL―>继电器2) TTL―>继电器(反向逻辑)3) TTL―>固态继电器4) TTL―>LED(8字)5) 继电器―>继电器6) 继电器―>固态继电器4、 开关量信号输入调理1) 干接点―>光耦 2) TTL―>光耦5、 CPU处理能力的考虑6、 成为产品的考虑:1) 电路板外形:大小尺寸、异形、连接器、空间体积2) 电路板模块化设计3) 成本分析4) 器件的冗余度1. 电阻的功耗2. 电容的耐压值等5) 机箱6) 电源的选择7) 模块化设计8) 成本核算1. 如何计算电路板的成本

2. 如何降低成本

选用功能满足价格便宜的器件十、 思考题1、 如何检测和指示RS422信号2、 如何检测和指示RS232信号3、 设计一个4位8字的显示板1) 电源:DC122) 接口:RS2323) 4位3”8字(连在一起)4) 亮度检测5) 二级调光4、 设计一个33位1”8字的显示板1) 电源:DC5V2) 接口:RS2323) 3排 11位8字,分4个、3个、4个3组,带行与行之间带间隔4) 单片机最小系统5) 译码逻辑6) 显示驱动和驱动器件5、 设计一个PCL725和MOXA C168P的接口板1) 电源:DC5V2) 接口:PCL725\\\/MOXA 8个RS2321. PCL725,直立DB37,孔2. MOXA C168P,DB62弯3) 开关量输出信号调理:6个固态继电器和8个继电器,可以被任何一路信号控制和驱动,接口:固态继电器5.08直立,继电器3.81直立4) 开关量输入调理:干接点闭合为1或0可选,接口:3.81直立5) RS232调理:1. LED指示2. 前4路RS232全信号,后4路只需要TX、RX、03. 无需光电隔离4. 接口形式:DB9(针)直立第二部分:软件知识一、 汇编语言二、 C51该部分可以从市场上买到的N种开发板上学到,至于第一部分,需要人来带吧。

为什么要掌握这些知识

实际上,电子工程师就是将一堆器件搭在一起,注入思想(程序),完成原来的这些器件分离时无法完成的功能,做成一个成品。

所需要的技能越高、功能越复杂、成本越低、市场上对相应的东东的需求越大,就越成功。

这就是电子工程师的自身的价值。

从成本到产品售出,之间的差价就是企业的追求。

作为企业的老板,是在市场上去寻找这样的应用;对电子工程师而言,是将老板提出的需求或者应用按照一定的构思原则(成本最低、可靠性最高、电路板最小、功能最强大等)在最短的时间内完成。

最短的时间,跟电子工程师的熟练程度、工作效率和工作时间直接有关。

这就是电子工程师的价值。

将电子产品抽象成一个硬件的模型,大约有以下组成: 1) 输入 2) 处理核心 3) 输出 输入基本上有以下的可能: 1) 键盘2) 串行接口(RS232\\\/485\\\/can bus\\\/以太网\\\/USB) 3) 开关量(TTL,电流环路,干接点) 4) 模拟量(4~20ma、 0~10ma、0~5V(平衡和非平衡信号)) 输出基本上有以下组成: 1) 串行接口(RS232\\\/485\\\/can bus\\\/以太网\\\/USB) 2) 开关量(TTL、电流环路、干接点、功率驱动) 3) 模拟量(4~20ma, 0~10ma,0~5V(平衡和非平衡信号)) 4) LED显示:发光管、八字 5) 液晶显示器 6) 蜂鸣器 处理核心主要有: 1) 8位单片机,主要就是51系列 2) 32位arm单片机,主要有atmel和三星系列 51系列单片机现在看来,只能做一些简单的应用,说白了,这个芯片也就是做单一的一件事情,做多了,不如使用arm来做;还可以在arm上加一个操作系统,程序既可靠又容易编写。

最近三星的arm受到追捧,价格便宜,以太网和USB的接口也有,周立功的开发系统也便宜,作为学习ARM的产品来说,应该是最好的;作为工业级的控制,是不是合适,在网友中有不同的看法和争议。

本公司使用atmel ARM91系列开发的1个室外使用的产品,在北京室外使用,没有任何的通风和加热的措施,从去年的5月份到现在,运行情况良好。

已经有个成功应用的案例。

但对于初学者来说,应该从51着手,一方面,51还是入门级的芯片,作为初学者练还是比较好的,可以将以上的概念走一遍;很多特殊的单片机也是在51的核的基础上增加了一些I\\\/O和A\\\/D、D\\\/A;也为今后学习更高一级的单片机和ARM打下基础。

再说了,哪个老板会将ARM级别的开发放在连51也没有学过的新手手中

在51上面去做复杂的并行扩展是没有必要的,比如,扩展I\\\/O口和A\\\/D、D\\\/A等等,可以直接买带有A\\\/D、D\\\/A的单片机;或者直接使用ARM,它的I\\\/O口线口多。

可以使用I2C接口的芯片,扩展I\\\/O口和A\\\/D、D\\\/A,以及SPI接口扩展LED显示,例如:MAX7219等芯片。

市面上一些比较古老的书籍中还有一些并行扩展的例子,如:RAM、EPROM、A\\\/D、D\\\/A等,我觉得已经没有必要去看了,知道历史上有这些一回事就行了; 这知识,是所有产品都具备的要素。

所以要学,再具体应用。

微机原理与接口技术 实验心得

实得这学期通过对微机原理和微机实验学习,对微机系统和它的工作原理有了的了解。

微机实验课,总共做了十几个实验,回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写汇编语言,它是和机器语言最接近的,用它来编程序,会比用其它高级语言要快得多。

实验课程加深了我们对汇编语言指令的熟悉和理解。

不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了操作,加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。

通过这次课程使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

对于这门课,我们收获了很多,我觉得这门课偏重于工程思维,主要难点在于对程序的理解。

但是老师让我们通过手打程序,控制实验平台很好的理解了各实验的实验程序。

对于课程的建议,实验讲义给的程序很清楚,大大降低了实验预习和自主编程的难度,给实验讲义可以更多的给方法和方式,提供一些程序建议而减少直接给出程序内容。

实验课上,请一个或两个同学讲解一下实验程序设计思路,通过讲解与其他人互动,可以收获更多。

微机原理课程上讲到的各种芯片的功能,以及引脚的作用,在实验中都得到了运用,使我们加深了对于主要芯片的应用的认识,同时在实验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动

谁能说说作为作为一名统战工作者的工作心得体会

debug命令及参数如下,你根据你的报告要求适当修改下就可以了,参数挺多,如果字数多捡主要的几个介绍下就可以了,比如-A ,-R,-D-U等等常用的就可以了DEBUG的命令及功能如下:* A[地址] 汇编命令 功能: 将指令直接汇编成机器码输入到内存中。

说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制, 用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,改语句被汇编到 CS:0100区域。

例A:>DEBUG -a 0100 08F1:0100 MOV AH,09 08F1:0102 MOV DX,109 08F1:0105 INT 21H; 08F1:0107 INT 21H;<-XP下运行cmd debug时,应该是INT 20H,21H会出遇无效指令错误 08F1:0109 db 'May I help you $' 08F1:0115←离开a状态 -g ←运行 May I help you 运行结果 Program terminated normally表示运行正常* C[源地址范围][目的地址]比较命令 功能: 比较两内存区域中的内容是否相同,若不同则显示其地址和内容。

如:C4000:0 3F 100 就是用来比较4000;0000-4000:003F与DS:0100-DS:013F之间的内容:其显示格式如下: 内存地址1内含值1内含值2内存地址2 例:比较4000:0 3F 100内容的差异 -C4000:0 3F 100 4000:0000 64 43 08F1:0100 4000:0001 3E 69 08F1:0101 显示内容的差异处 4000:0002 78 FF 08F1:0102 …………………………………… 如果要比较的范围在DS内,则段地址不必指出: 如:-C 0 4 100;比较DS:0---DS:4与DS:100---DS:104 C命令的另一种格式如下:C地址1 L 长度 地址2 如:-C000:0 L4 0;由0000:0与与DS:0开始比较它同-C0000:0 3 0命令相等,显示结果如下: 0000:0000 8A C0 08F1:0000 0000:0001 10 20 08F1:0001 它们都比较4个字节 0000:0002 1C 00 08F1:0002 0000:0003 49 7F 08F1:0003转储命令 * D[地址] 或D[起始地址][目的地址] 转储命令 功能: 以内存映象方式显示内存中的信息。

说明: 转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCII字符显示,所有不可打印字符用句号(。

)表示。

每行显示16个字节的内容,在第八和第九个字节之间有一个连字符 - 此命令隐含的段地址为DS的值。

若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令, 则从初使化的段寄存器的内容,加上地址偏移量 0100H 开始显示。

例:-d10,4f即为显示DS:4f的内容在D命令中如不指出段地址,则其默认为DS段。

如指明段地址,则从指明的段地址列出指定的范围 如:-dfff:00:0f 我们也可以指定长度来列出所需要内存内容 如:-d 100 L20即为显示由DS:100-DS:11F的内容,共20H个字节: * E[地址] [字节串) 修改内存命令 功能: 从指定的地址开始修改内存值。

格式:E起始地址[数据行] (1)用给定内容代替指定范围的单元内容 -E地址 内容表 例:-E100 41 42 43 44 48 47 46 45 -D 100,L08 08F1:0100 41 42 43 44 48 47 46 45 ABCDHGFE… (2)逐个内存内容 例:-E 100: 08F1:0100 76 42 :42是操作员键入 此命令是将原100号内存内容76修改为42,用D命令可察看。

* F[地址范围] [字节或字节串] 填写命令 功能: 将要填写的字节或字节串填入由地址范围指定的存储器中。

例:-f100 120 61 62 63 64 -d100 11f 08F1:0100 61 62 63 64 61 62 63 64 -61 62 63 64 61 62 63 abcd abcd abcd abcd 08F1:0110 13 67 98 E3 C8 2E B3 B6 -03 21 AC 19 3121 4E 96 g……1… 如果数据行超出指定的范围,则填不下的数值会被忽略。

例:-f 100 107 41 43 43 44 45 46 47 48 49 4A 4B 4C 4D -d 100,lof 08F1:0100 41 42 43 44 45 46 47 64 -61 62 63 64 ABCDEFGdabcdabcd 由上例可看出,超出范围的数据被忽略 另外,F和E命令都可填入字符串: 如:-F 100 105 MSDOS -d 100 l0f 08F1:0100 4D 53 44 4F 53 46 47 64 -61 62 63 64 MS DOS FGabcd abcd* G[=起始地址] [[断点]……] 执行命令 功能: 执行正在调试的程序,当达到断点时停止执行, 并且显示寄存器标志和下一条要执行的命令。

说明: 如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。

如果指定断点,当指令到达指令地址时停止执行,并显示各寄存器标志位的内容和下一条要执行的命令,最多允许用户设定10个断点。

例:A:\\\\>debug tan.exe -u:反编译成汇编语言程码 ………… . . -g 100 指定中断点 Program terminated normally: 另外:我们在DEBUG下可运行一个文件.EXE 如:A:\\\\>debug tan.exe -g 即可开始运行此程序,和在DOS下完全一样: * H[数值][数值] 十六进制算术运算命令 功能: 分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。

说明: 替用户完成简单的十六进制数的运算。

例:-h4538 5623 9B5B EF15* I[端口地址] 功能: 从指定的端口输入并显示(用十六进制)的一个字节。

例:-i70 F9;显示70端口的内容为F9 I命令可由80X86的64K个端口取数据* L[地址][盘号:][逻辑扇区号][扇区数] 功能: 将一个文件或盘的绝对扇区装入存储器。

说明: 单个L命令能够装入的最大扇区数是 80H,其中盘号 0,1,2,3……分别代表 A,B,C,……出现读盘错,显示错误信息。

(1)格式1.L装入地址 驱动器名 起始扇区\\\/扇区数 这种方式可把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中,在此外扇区编号引用逻辑\\\/扇区的方式。

例:-L 100 0 01,将A驱的0扇区装至CS:100上 -d 100 10f 08F1:0100 EB 3C 90 3C 53 44 4F 53 -36 2E 32 32 02 01 01 00.L,MSDOS 6.22…… (2)格式2:L装入地址 这种方式可把指定文件装入内存,装入的文件可在进入DEBUG时指定亦可用N命令建立,格式为-n文件名: 例1 DEBUG tan.pas -L 100 例2 DEBUG -n tan.pas -L 100 须知:L命令只能读取逻辑扇区,不能读取硬盘分区表 L命令中所用的磁盘代码A=00,B=01,C=02……* M[地址范围][起始地址] 数据传送命令 功能: 把地址范围内的存储器单元的内容移到起始地址的指定地址中 说明: 传送期间,源区和目标区可以部分重叠;传送后源区域数据保持不变。

例:-e100 41 42 43 44 45 -d100 10f 08F1:0100 41 42 43 44 45 62 62 63 64 -61 62 63 64 61 62 63 64 ABCDEBCDABCDABCD -M 100 104 110 -d110 L1F 08F1:0100 41 42 43 45 0A 21 19-20 01 01 20 07 96 87 9F ABCDE……* N[盘号: ] [路径] [文件名] [扩展名] 功能: 定义操作文件名。

说明: 可同时定义两个操作文件,并将形成的文件控制块相应的设置在内存 CS:5C和CS:6C上,供以后的L和W命令操作之用。

我们在运行程序侦错时,在启动DEBUG时在其后加文件程序名以及该程序的参数或运行文件,但当我们侦错一段后,可能装入其它文件来测试,这时我们可利用N命令来设置而无需退出DEBUG。

例:A:\\\\>DEBUG tan.exe -n youg.pas 当程序侦错一段时间后,若要把tan.exe装入tan1.pas则-ntanl.pas* O[端口地址][数据] 输出命令 功能: 发送字节到指定的输出端口。

例:当我们遇到开机要求输入口令时,可用如下方式取消 -O 70 10 _O 71 00* P[=地址] [数据] 进程命令 功能: 将一个子程序调用指令,循环指令,中断指令或一个重复字符串指令,停止在下一条指令上。

说明: 在执行一条子程序调用指令,循环指令,中断指令或一个重复字符串指令时,发出P命令去执行有关指令,并且返回到要执行的下一条指令。

P命令和T一样选用来跟踪程序运行过程用的命令,我们可以在P命令中指定程序运行的起始地址,指令个数,如未指定则CS:IP所指定程序的地址开始一次运行一条令。

P与T命令的差别在于P命令把CALL\\\/INT当成一条指令来执行,简化了跟踪过程,P命令只运行RAM内存的命令,而T命令则可运行RAM和ROM里的程序。

* Q 退出命令。

* R[寄存器] 寄存器命令 功能: 一,显示单个寄存器的内容,并提供修改功能。

二,显示所有寄存器内容, 再加上字母标志位状态以及要执行的下一条指令。

三,显示8个标志位状态, 并提供修改功能。

若不想改变则回车即可。

例:-r bx bx 0050 :51 -r AX=0000 BX=0051 CX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0003 ES=0CD3 SS=0CD3 IP=0100 NV UP EI PL NZ NA OP NC 0CD3:0100 0F DB OF 若想改变标志寄存器,用-RF回车,则DEBUG会将标志内容显示出来,若想改变任一标志,只要输入该标志的名称即可。

标志名称 设置 未设置 标志名称 设置 未设置 滋出 OV(未溢出) NV(未溢出) 零位 ZR NZ(不等于零) 方向 DN(减少) UP(增加) 辅助进位 AC NA(无进位) 中断 EI(许可) DI(禁止) 奇偶标志 PE(偶) PO(奇) 符号 NG(负) PL(正) 进位 CY NC(清除进位) 例:-Rf NV UP EI PL NZ NA PO NC :-OV DI← 输入值* S[地址范围] [字符串] 功能: 在指定的地址范围内查找给定的字符串。

说明: 用来指定在地址范围内查找一个字符串,若找到则显示其地址, 否则直接显示DEBUG提示符。

隐含地址为DS段值。

在此内存可以用(起始地址)(终止地址)或(起始地址)L(长度)的方式来表示,而字符串与数据行则可混合使用:如:02.76BC。

例:-d100 lof 08F1:0100 OF 2A 41 43 0B 31 42 96 -FF F0 B9 8A F3 00 B1.. AC,1B... -S 100 lofAC 08F1:0102← 表示找到,由0102开始,* T[=地址][指令条数] 跟踪命令 功能: 逐条跟踪程序的执行,每条指令执行后都将显示各寄存器的内容。

说明: 通常采用跟踪一条指令,但用户也可以用指令条数设定一次跟踪多条指令, 每执行一条指令之后,显示所有寄存器的内容和标志状态。

逐条指令跟踪 -T[=起始地址] 从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值,如来指定地址则从当前CS:IP开始执行。

A:\\\\>DEBUG -A 08F1:0100 MOV DL,03H 08F1:0102 MOV AH,02H 08F1:0104 INT 21H 08F1:0106 INT 20H 08F1:0108 -T AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=08F1 ES=08F1 SS=08F1 CS=08F1 1P=0105 NV UP EI PL NZ PO CY 09F1:0102 B402 MOV AH,02 若指定起始地址,则T命令会从指定的地址开始跟踪,我们还可以指定跟踪一次所运行指令的个数,用Ctrl+S暂停屏幕的显示,以便观察。

-t=100 10;由CS:100开始跟踪10条指令* U[起始地址]或者[地址范围] 功能: 将内存中的内容转换为汇编语句。

说明: 反汇编的字节数取决与用户的系统显示形式,以及在U命令中使用的可选项。

(1)从指定地址开始编译,反汇编32个字节 -U[地址]←从CS:100开始,其反汇编32个字节 如果地址被省略,则从一个U命令的最后一条指令的下一条单元开始汇编32个字节。

(2)对指定的存贮范围进行反汇编 -u起始地址 终止地址(L 长度) 例:-U 100 109 08F1:0100 CD20 INT 20 08F1:0102 FF9F009A CALL FA12[BX+9A00] 08F1:0106 F0 LOCK 08F1:0107 FE1D CALL FAR [DI] 08F1:0109 F0 LOCK 说明:如指定了范围则整个范围全都会被反编译* W写盘命令 * W[地址] [盘符:] [起始扇区] [扇区数] 写盘命令 功能: 将修改过的数据写到磁盘上。

说明: 可以将指定内存地址开始的数据写在磁盘上,可以在没有指定参数, 或指定地址参数的情况下,将调试文件写在磁盘上。

在运行W时需设置文件的大小CX或BX寄存器 (1)把数据写入磁盘的指定扇区 -W 起始地址 驱动器名 起始扇区 扇区数 (2)把数据写入指定文件中 -W 起始地址 例A:\\\\>DEBUG -A 08f1:0100.... . 写入程序段 08F1: 012A.... -R CX CX:0000 :2A←写入字节数,即为程序结尾地址减起始地址 -n tan.com←设置文件名,需后缀为com -w Wring 002A bytes -q A:\\\\>TAN←即可执行此程序 * XD命令:释放EMS内存 例:-XD 0001 handle 0001 deallocatel←释放了 利用XD释放后可再分配 *XM命令;把扩充内存上的内存页区映射到主内存区 格式:XM RAM 长页码 主内存页码句柄 例:-XM3 2 0001←把0001号句柄的第3号逻辑页区映射到2号真实页区 Logical page 03 mapped to physical page 02 *XS命令:显示当前EMS使用情况。

格式 -XS

急求一篇800字的入党心得体会,标题是《学习先进,讲奉献,立足岗位当先锋,争做一名合格的共产党员》

固原金马客运有限责任公司党支部  一年来,在市委、政府和市交通局党总支的领导下,按照非公有制企业党建工作要求,坚持“以人为本、服务第一、旅客至上”的企业宗旨,以“树立一流作风、实施一流管理、培养一流队伍、提供一流服务、创造一流效益”为目标。

以“服务客运争先进、岗位奉献当先锋”为载体,扎实开展创先争优活动,取得了党建工作和社会经济效益的双丰收。

  一、抓规范、夯基础、强素质一是规范阵地建设。

在党建工作指导员的帮助下,建起了党员活动室,购买了桌椅、资料柜、电视、DVD等电教设备,做到有阵地、有设备、有学习资料、有活动,制度上墙,布置规范。

二是规范制度建设。

制订党支部工作职责、党支部书记职责、党员大会制度、党支部会议制度、党员组织生活会制度、党员学习制度、民主评议党员制度和入党积极分子培养教育等制度,制订完善公司生产经营管理的50多项制度,形成制度汇编。

三是规范组织活动。

针对客运行业情况,利用召开职工大会、座谈会、联谊会、举办文体活动等形式,坚持党群共建,抓好党员职工的思想政治教育,提升素质,强化服务。

今年“五一”“七一”“十一”期间,组织开展乒乓球友谊赛、跳绳比赛、拔河比赛、驾驶技能比赛等活动,活跃了文化,凝聚了人心,激发了活力。

年内有12名同志递交了入党申请书,培养入党积极分子7名。

  二、抓管理、保安全、争先进一是认真完善规章制度。

制订安全管理办法等50多项管理制度、30多个岗位职责和服务岗位工作程序、作业内容及质量要求,形成了长效机制。

建立健全安全责任制,公司领导带头抓落实,全体管理人员立足岗位抓管理,责任到人、落实到岗,形成了层层抓落实的良好机制。

加大监督检查力度,充分利用GPS监控平台对车辆进行动态监管,保证了公司的安全生产。

二是从安全基础管理工作入手,对进站的200多辆客车建立了安全运行档案,并对司乘人员、二级维护、灭火器、防滑链、保险、三品登记、司乘人员安全例会、安全培训、违章违约处理、事故记录等台账进行归类完善,不断提升管理标准,实现了科学化管理。

三是公司党支部本着“全日制管理、人性化服务”的理念,开展“比技术、比交规、比服务、比效益、争创青年文明车”的“四比一争创”优质服务竞赛活动,树立客运窗口行业的良好形象。

公司党支部通过平时管理、民主测评和上路抽查等办法,评选“党员模范车”3辆、“青年文明车”3辆。

四是为职工办实事,解难事。

先后为公司13名员工购买了社会保险,提高了福利待遇,保障了工资收入,进一步调动了员工的积极性和工作热情。

  三、抓服务、树形象、促效益一是认真推行“六心、五勤、四要、十不准”服务标准,做到服务规范化。

二是切实维护公司形象。

全体员工心中时刻牢记“人人是形象,处处是环境”的服务理念,涌现出了帮助旅客搬运行李、扶老携幼、拾金不昧等许多好人好事,公司领导和员工自发为青海玉树地震灾区同胞捐款1万余元,先后为20多名困难学生购买了车票,受到社会各界的称赞。

三是全力保障春节、“五一”、国庆节、元旦等节假日的客运,做到早分析、早准备、早安排,严格各项管理程序,加大监督检查工作力度,及时协调好备班车辆,确保运力充足。

严格执行“三关一监督”,今年共进行了10余次安全大检查,召开专题安全工作例会22次,定期和不定期抽查客运车辆5000辆(次)。

检查旅客行李包3000余件,查获危险品6件,安检车辆54000多辆(次),检出故障车46辆(次)。

第一次在keil for arm中写汇编程序汇编程序编译错误。

……自己写汇编就别包含startup,人家可是认准了会有main()才会投奔的

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片