初学者求助:用AT89C52单片机、16*64显示屏用仿真软件proteue显示...
单片机实现软件复位(软复位)的方法及讨论 (天堂雨林博客blog.sina.com.cn/acer收集整理) 单片机软复位有什么好的方法?如从机收到复位命令(软件命令),程序怎么使机器复位?虽然要使软件始终处于可控状态,最好不要用"复位",因为复位是纯硬件过程,软件是不可控的.但是我们还是要讨论方法,一般流传的方法如下: 1、放狗; 2、((void(code *)(void))0x0000)(); 3、用单片机一个引脚控制点一下RSTRST; 4、用单片机一个引脚控制重新加电; 5、用单片机自带的软件复位指令或内狗指令; 6、goto大法; 天堂雨林博客对以上方法的意见: 方法1:“放狗”是单片机软复位的最好办法,也基本上是唯一的一个办法。
但并不是所有单片机都具备看门狗的功能,也不是一个万全之策。
办法2:这不是复位,只是把程序转到地址0去执行,不如用一个JMP更直接。
目前可能极少数单片机或者用户已经自行添加Boot load时用户程序的程序开始地址并不为0x0000,所以需要查找这些特定单片机的启动地址。
在keil C51下面可以这样实现: void soft_reset(void) { ((void (code *) (void)) 0x0000) (); } 在需要软件复位的地方使用语句: soft_reset(); 一般可实现软件复位。
办法3:用软件实现的硬复位。
需要牺牲一个单片机引脚,且增加了单片机外部电路构造的复杂性,很不可取。
办法4:类似办法3,同样需要牺牲一个单片机引脚,且增加了单片机外部电路构造的复杂性,很不可取。
但不能把它单单地当成是复位,应该叫上电复位。
办法5:Atmel 89C不带内狗,S的有内狗,只是一条指令就行。
如STC的单片机有软件复位指令,即ISP_CONTR,地址在0E7H 单元(即str ISP_CONTR=0xE7),MOV ISP_CONTR,#00100000B(C语言为ISP_CONTR=0x20),内狗也是一条指令MOV WDT_CONTR,#00111100B! STC 51系列单片机Datasheet中指出:传统的8051 单片机由于硬件上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦。
现STC 新推出的增强型8051 根据客户要求增加了ISP_CONTR 特殊功能寄存器,实现了此功能。
用户只需简单的控制ISP_CONTR 特殊功能寄存器的其中两位 SWBS / SWRST 就可以系统复位了。
办法6:程序从头(上电复位处)开始运行,且只有一个循环这种情况,当然可以用goto,如在main()的开头设一个start:,在程序的唯一循环中设定一个条件,然后goto命令。
但需要注意,如果是在中断例程里,那么中断挂号寄存器仍置位,同级中断不能执行。
所以必须先使中断挂号寄存器清零,EA = 0。
只有RETI指令可以使中断挂号寄存器清零。
51单片机有两级中断优先级,所以需要执行两次RETI指令。
这用汇编是很简单的事,而C则比较难以实现。
但是,goto命令尽量不要用,因为goto会到处乱窜,而且goto不能跑到函数外面去执行一个命令。
最后总结如下:最好使用办法5最为简洁方便,使用办法2实现也不失为一种好方法
一直是正在检测目标单片机用的是STC-ISP(V6.75)软件不过虚拟机里要装32位系统,因为STC的烧写软件好像还没有支持64位的功能吧另外,检查你的COM口是否正确,波特率一般选默认即可9600最重要的一点是:请将虚拟机全屏,并运行排斥模式之后,再将USB转串口线插入电脑(且要保证虚拟机中已经安装了USB转串口驱动及单片机烧写软件,当然如果你是台式机并且自带串口则直接拿串口线即可烧写)下面的部分仅适用于使用USB转串口线烧写程序的同志们,若非则无需浪费时间问:为何要运行排斥模式之后再插入USB转串口线?答:其实我也不明白,不过你可以找个U盘实验一下,会出现如下情况如果你在物理机下(即将虚拟机窗口最小化之后)插入U盘,则物理机可识别并读写,而虚拟机不可如果你运行排斥模式之后插入U盘,则虚拟机可识别U盘,并可对U盘读写;而物理机不出现U盘盘符,更不要说读写了,即使此时将系统切换至物理机的界面内,U盘仍然只能被虚拟机识别综上所述:当然啦,我曾经在虚拟机里面烧写过单片机程序的,这个你放心(实验平台式:物理机WIN7 32位系统,虚拟机XP 32位系统,由于是台式机,所以两个系统里面均安装了USB转串口驱动)因此,综上所述:为什么是这样,我不晓得这样做在你的实验平台下是否可行,我也不确定GOOD LUCK
32位操作系统,x64处理器,安装有的软件标明32位和64位两种?
比较大的程序还真不好说,很多单片机编程软件开发商把2KB定为一个标准,超过2KB就不能使用免费软件了。
所以可以把2KB作为大小程序的标准,大的程序可以达到64KB(也就是8位单片机的ROM上限)。
一般嘛,2-16KB比较多。
如果程序过大,可以考虑扩展外部EEPROM,比如AT24C256(32KB)之类的来实现,也可以使用并行扩展(不推荐,占用IO口过多)。
也可以更简单一些,使用增强型的51单片机(也很多),比如AT89S52(8KB FlashROM),还有STC12C5A60S2(带10位AD,60KB ROM)。
型号很多很多,价格都在10块/片里面,不推荐用80C51(标准型51,功能实体太少,太弱,价格不便宜)
单片机(汇编语言)需要的软件?
51单片机是Keil 软件 pic单片机是MPLAB软件汇编要将编辑文件要保存为.asm为后缀的文件(c语言则是.c为后缀)avr单片机是avr studio 或iccavr软件汇编要将编辑文件要保存为.s为后缀的文件(c语言则是.c为后缀) 51单片机可以很多下载软件 将你的汇编程序 在Keil 软件中设置为:options for target 1->output->create HEX file生成hex文件 然后将这个hex文件通过下载软件下载到单片机中. 下载软件有两类:串口下载和ISP接口下载ISP接口下载软件是对应你的下载器的(一般买下载器都会给你对应的下载软件的)串口下载:STC类的51单片机可以用STC_ISP_V486.exe,但是对于Atmel类的就不行微机原理的上机课都是在DOS下输入EDIT XX.ASM后编写的,单片机也是这样吗?单片机不是这样的 因为微机机器码和单片机机器码是不一样的所以单片机需要在windows下用对应的软件生成单片机的机器码 在单片机中才能运行啊祝你学习进步...