21ic电子技术论坛上有不少大神,或许可以帮到你。。祝你成功!
‘贰’ MC908GP32单片机的Flash存储器的编程过程
在HC08系列单片机中,对Flash进行擦除或写入操作需要遵循一定的时序和步骤。对于整个MC68HC908系列的各个型号,这些步骤是一样的,但时序要求可能略有不同,针对具体型号的Flash进行编程时应参考相应的芯片手册。同时需要注意的是,一些型号的监控ROM内含有Flash编程子程序,用户可直接调用,例如MC68HC908JL3;有的型号则没有,例如MC908GP32,这种情况需自行编制子程序。下面介绍MC908GP32的Flash编程的基本操作。 下面过程可以擦除GP32的Flash存储器的一页(128字节):
①$2→FLCR(1→ERASE位,0→MASS位):进行页面擦除。
②读Flash块保护寄存器FLBPR。
③向被擦除的Flash页内任意一个地址写入任意值,为方便起见,一般向待擦除页首地址写入0。
④延时tnvs(>10µs)。
⑤$A→FLCR(1→HVEN位)。
⑥延时terase(>1ms)。
⑦$8→FLCR(0→ERASE位)。
⑧延时tnvh(>5µs)。
⑨$0→FLCR(0→HVEN位)。
⑩延时trcv(>1µs),完成一页的擦除操作。 下面过程擦除GP32的整个Flash区域,以便把新的程序装入Flash存储器,这是应用系统研制过程中开发工具对GP32编程的准备工作。
①$6→FLCR(1→ERASE位,1→MASS位):进行整体擦除。
②读Flash块保护寄存器FLBPR。
③向被擦除的Flash任意一个地址写入任意值,为方便起见,一般向首地址写入0。
④延时tnvs(>10µs)。
⑤$E→FLCR(1→HVEN位、MASS位、ERASE位)。
⑥延时tMerase(>4ms)。
⑦$C→FLCR(0→ERASE位)。
⑧延时tnvhl(>100µs)。
⑨$0→FLCR(0→HVEN位、MASS位)。
⑩延时trcv(>1µs),完成整体擦除操作。 MC908GP32的Flash编程操作以行(64字节)为单位进行的。当然,一次写入可以小于一行,但不能大于一行。对于已经写过的部分,未经擦除不能重新写入变更其数据,否则将引起数据出错。写入过程如下:
①$1→FLCR(1→PGM位)。
②读Flash块保护寄存器FLBPR。
③向将要写入的Flash行内任意一个地址写入任意值,为方便起见,一般向行首地址写入0,这一步选定了所要编程的行,以下的目标地址必须在这一行中。
④先延时tnvs(>10µs);再将$9→FLCR(1→HVEN位)。
⑤先延时tpgs(>5µs);再将待写数据写入对应的Flash地址。
⑥延时tprog(>30µs),完成一个字节的写入(编程)工作。
⑦重复⑤、⑥,直至同一行内各字节写入完毕。
⑧$8→FLCR(0→PGM位)。
⑨先延时tnvh(>5µs);再将$0→FLCR(0→HVEN位)。
⑩延时trcv(>1µs)以后,完成本行写入工作,可以读出校验。
‘叁’ 单片机编程
单片机编程的语言既可以用C,也可以用汇编。
用汇编的优势主要是程序可以被编程者优化,而不是由编译器优化,这样就可以绝对可控,程序的安全性和执行速度受编程者水平限制,不过总的执行速度较C语言快,代码占程序存储器的容量较C语言小。这样,汇编程序更适合程序存储器和数据存储器较小的老式单片机。但是,汇编程序毕竟是机器语言的汇编助记符,所以存在指令难记,指令功能弱的缺点,造成学习困难。
C语言的优势与缺点正好与汇编相反。C语言毕竟是一种高级语言,具有较好的学习性,几乎不必记忆指令,学习容易,而且编译时的优化由编译器管理,一般不受编程者水平限制。由于机器优化的局限性,C语言总的执行速度较汇编语言慢,代码占程序存储器的容量较汇编语言大。这样,C程序更适合程序存储器和数据存储器较大的新式单片机。
建议初学者先使用C语言快速入门,然后再研究汇编语言,优化程序设计。
‘肆’ 51单片机实验程序
#include "REG52.H"
unsigned char Extep_Time ;
/*
* T0定时器初始化 //
*/
void SystemInit(void)
{
TMOD = 0x01;
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
ET0 = 1;
TR0 = 1;
EA = 1;
}
int main(void)
{
// IO初始化
P0 = 0xFF;
P1 = 0xFF;
P0 = 0xFF;
P1 = 0xFF;
// T0定时器初始化
SystemInit();
while(1);
}
/*
* T0定时器中断服务程序
*/
void Timero_IRQ(void) interrupt 1
{
Extep_Time++;
if(Extep_Time == 20)
{
Extep_Time = 0;
P0 = ~P0;
}
}
‘伍’ 单片机实验编制程序对外部存储器进行读写操作
MOV A,#DATA(要写入的数据);
MOV DPTR,#Address(要存放数据的外部存储器单元地址);
MOVX @DPTR,A;
MOVX A,@DPTR;
CJNZ A,#DATA(判断时认为要传送的正确数据),LABEL
CLR P1.0
JMP END
LABEL:CLR P1.1
END:AJMP $
‘陆’ 单片机是什么如何编程输入单片机
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。生活中的电脑、手机、电视都包含着单片机方方面面的应用。
在初学单片机时主要会用到51单片机,除此之外还有AVR、STM32、ARM等常用的单片机,单片机性能越好,操作越复杂,学习内容越广。
将程序烧录入单片机时我们会需要用到编译器,将C语言或汇编语言编译成单片机能够识别的机器语言,即二进制。常用的软件有Keil、IAR等,编译完成后会使用烧录软件、烧录器如ISP等将代码烧录入单片机。
网络: http://ke..com/link?url=jhpGm1NhiryFmLB6vD__UH0VHdheD3N1ctM_
‘柒’ 单片机ram 存储器读写实验
这个不太好解答了。
楼主问的应该是ROM吧?
RAM是内存,掉电丢数据的。
一般储存器是指ROM,掉电不会丢失数据。
而单片机也太笼统了,好多品牌和型号呢,51和STM32用的比较多,不知道楼主要哪种的例程?
还有就是ROM也分很多呀,可以是FLASH,也可以使EPPROM等等~~~
当然不管是什么ROM,大部分都有一个特性是要先擦除后写入~~~而且擦除的速度比较慢。
给个采纳呗~
‘捌’ C51单片机编程:试编程将外部数据存储器8000H至8032H单元的内容送至内部数据存储器
DATM:
MOV DPTR,#8000H
MOV R2,#33H
MOV R0,#30H
LOOP:
MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,LOOP
RET
‘玖’ 51单片机是什么如何学习它的编程都用在哪些方面
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。
由于intel生产的8031的升级版8051工艺成熟,成为当时市场应用量最大的单片机,所以对此类兼容芯片统称51单片机。
该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
现在每年仍旧会使用几十亿片51系列的兼容芯片,在你想得到的电器、玩具上,比如:遥控灯具、洗衣机、冰箱、电子钟表、显示器、汽车(每辆汽车可能会用到十几到几十片)。。。。。
学习它很简单,到当地书店、图书馆、随手可以找到几十种单片机入门书,8成以上是讲51系列单片机的。
----------------
学习编辑
作为一个初学者,如何单片机入门?
知识上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以了,自学过这2门课程的高中生也够条件。设备上,一般是建议购买一个仿真器,例如,的“双功能下载线”就具有良好的稳定性和较快的下载速度,上位机可扩展,可以下载更多的单片机及嵌入式芯片。通过实验,这样才可以进行实际的,全面的学习。日后在工作上,仿真器也大有用处。还有,一般光有仿真器是不行,还得有一个实际的电路,即学习板,如图,即为,单片机最小系统。
学习板以强大的接口为主,单片机的学习分两方面,一方面是单片机的原理及内部结构,另一方面是单片机的接口技术。这些都是需要平时多积累,多动手,多思考,这样才能学好单片机技术。
注:“双功能下载线”在网络文库里有详细的使用说明,并且上位机会定期更新以支持更多的单片机。
单片机学习的4个阶段
一、整体了解
要知道 单片机是什么?单片机有何用?如何系统学习单片机?单片机系统设计的流程是怎样的,需要掌握哪些辅助软件?
了解这些之后,我们的学习就有了目标和方向。
二、揭秘单片机很难学,是因为其内部结构、编程语言抽象,且实际应用中与其他电子技术和元器件知识相互关联,需结合起来一起设计开发产品。所以,第二阶段要了解单片机的内部结构是怎样的?单片机开发经常会用到哪些电子技术和元器件知识?如何将一条条编程指令组合成一段段有效的程序?
三、解密之所以单片机能成为控制核心,设计出包罗万象的应用系统来,是因为开发者利用了单片机提供的种种功能及各种外设。所以,第三阶段我们要掌握单片机的各种功能,再加上诸如传感器、模数转换、扫描显示、串行、中断的应用思维,结合更多的元器件、电子电路知识,逐个学习、体会实际的单片机系统的秘密。
四、远航通过以上三个阶段,读者基本就可掌握单片机的应用了。但要设计出丰富的单片机系统,解决复杂的实际问题,还需要了解更多的外设知识及其与单片机的联系(如电动机、各类
存储器、继电器、红外管等)。这些需要不断的学习和积累。有时候,接到一些开发任务,就需要你针对这个任务自觉地去搜集、学习相关知识,在实践中不断载学习和提高。
参考网络:http://ke..com/link?url=
‘拾’ 单片机存储器的程序存储器
MCS-51中,程序存储器通过16位程序计数器(PC)寻址,具有64KB寻址能力,也即可以在64KB的地址空间任意寻址。其中,具有4KB片内程序存储器空间,地址为000H-0FFFH(注:8031无片内程序存储器);片外程序存储器空间最大可扩展到64KB,地址为0000H-FFFFH,片内、外统一编址。
1、程序存储器片内与片外地址
由于片内、外统一编址,所以片内4KB存储空间地址000H-0FFFH与片外存储器地址000H-0FFFH发生冲突。但是,CPU是访问片内存储器还是访问片外存储器,可由引脚上所接的电平来确定。
1)当EA引脚接高电平时,若程序计数器(PC)值超出片内存储空间,则自动转向片外程序存储器空间执行程序;
2)当EA引脚接低电平时,单片机只能执行片外程序存储器的程序。
另外,因为8031没有片内程序存储器,所以就将EA引脚固定接低电平,通过外部扩展程序存储器来存放程序;而对其它MCS-51,若没有片外程序存储器,那应将引脚固定接高电平。通过EA引脚所接电平不同,解决了程序存储器中片内、片外地址冲突问题。
2、程序存储器中的特殊单元
MCS-51程序存储器中,有6个存储单元具有特殊用途。
0000H单元为系统启动地址。MCS-51单片机启动复位后,程序计数器(PC)的内容为0000H,所以系统将从0000H单元取指令,并开始执行程序。程序设计时一般在该地址存放一条绝对跳转指令,转入主程序的入口地址。
另外0003H一002AH日被均匀地分成5段,用于5个中断服务程序的入口。
其中0003H、000BH、0013H、O01BH、0023H为5个中断源的中断服务程序的入口地址。
中断源的中断服务程序的入口地址,即当中断产生相应的中断服务程序的起始地址被装入程序计数器(PC),系统将从该地址取指令,并执行程序 。 8051有256个单元的内片数据存储器,其中00H-7FH为片内随机存储器RAM,也叫低128B;80H-FFH为特殊功能寄存器,也叫高128B。低128B又分为工作寄存器区、位寻址区、用户RAM区。
1.工作寄存器区(00H-1FH)
在00H-1FH共32个单元,被均匀地分为四组工作寄存器堆:RB0、RB1、RB2、RB3,每组寄存器堆包含8个工作寄存器,均以R0-R7来命名,这些寄存器被称为通用寄存器。工作寄存器用于临时存放8位信息。在使用时,由程序状态字寄存器中的RS0、RS1来选择工作寄存器堆。
2.位寻址区(20H-2FH)
片内数据存储器的20H-2FH存储区为位寻址区,既可作为一般单元按字节寻址,也可按位进行寻址。位寻址区有16个字节,位地址为00H-7FH。
3.用户RAM区(30H-7FH)
用户RAM区主要用作数据缓冲区和堆栈。这个存储区只能按字节寻址,用作存放数据及作为堆栈区。通常堆栈区被设置在这块存储区,由堆栈寄存器SP指定,CPU复位时SP=07H,使得堆栈实际上是从08H开始的,但08H-1FH属于工作寄存器区 。 MCS-51单片机的特殊功能寄存器 符号 地址 功能介绍 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序状态字 TH2* CDH 定时器/计数器2(高8位) TL2* CCH 定时器/计数器2(低8位) RLDH* CBH 外部输入(P1.1)计数器/自动再装入模式时初值寄存器高八位 RLDL* CAH 外部输入(P1.1)计数器/自动再装入模式时初值寄存器低八位 T2CON* C8H T2定时器/计数器控制寄存器 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器 P2 A0H P2口锁存器 SBUF 99H 串行口锁存器 SCON 98H 串行口控制寄存器 P1 90H P1口锁存器 TH1 8DH 定时器/计数器1(高8位) TH0 8CH 定时器/计数器0(高8位) TL1 8BH 定时器/计数器1(低8位) TL0 8AH 定时器/计数器0(低8位) TMOD 89H T0、T1定时器/计数器方式控制寄存器 TCON 88H T0、T1定时器/计数器控制寄存器 DPH 83H 数据地址指针(高8位) DPL 82H 数据地址指针(低8位) SP 81H 堆栈指针 P0 80H P0口锁存器 PCON 87H 电源控制寄存器