8052单片机程序存储器中的六个特殊单元是什么,各有何用途?

如题所述

#include<reg52.h> 头文件
#define uchar unsigned char 宏定义懂吧 以后unsigned char就用uchar表示了
uchar code table[]=
;编码定义和C中数组定义方法类似 这里主要是为了让数码管显示具体数字而编的
uchar seconds,minute,count1; 定义变量

/**********初始化函数***************/
void init()
{
P0=0xff; 这个有电路图才好说 不过好像是让端口都为高电平
P0=0x00; // 初始化关显示
seconds=0;
minute=0;
count1=0;
TMOD=0x11; //选择计数器T1模式1
TH1=(65536-46080)/256; 这是定时器的设置 计算初值 改变那个被减数可以改变每次的时间
TL1=(65536-46080)%256; //定时器1实现50MS定时 同上
EA=1; //开总中断
ET1=1; //开定时器1中断
TR1=1; //定时器1开始计数
}

/******定时器1中断函数*********/
void t1() interrupt 3 //定时器1中断级别为3
{
TH1=(65536-46080)/256;//数据重载 “/”这符号是求模
TL1=(65536-46080)%256; ”%“这符号是求余
count1++;
if(count1==20) 这个20乘以上面的那个50毫秒就是1秒钟
{
count1=0; 计20次重新归零
seconds++; 每计20次秒数加一
if(seconds>59)
{
seconds=0;
}minute++; 当秒数>59时秒数归零 分加1 我个人觉得这应该设置为>60 如果设置为59的话 seconds=59的时候就归零了 就是说59可能就不会显示了

}
}

/*******延时函数***************/
void delay(uchar xms)
{
char x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--); 这是根据程序仿真算的时间 每110次大概就是一毫秒 设置X等于几就是几毫秒
}

/************显示函数***********/
void display(uchar temp)
{
uchar qian,bai,shi,ge; 定义变量
temp=seconds; 把seconds的值传递给temp

qian=minute/10; 对10取模
bai=minute%10; 对10取余

shi=temp/10; 对10取模
ge=temp%10; 对10取余

P0=0xff; //消隐 这个没什么大用 去掉也可以
P2=0xdf;//第一个数码管选中 这个值得看你那电路图
P0=table[ge]; 对P0赋值 从table中调取
delay(1); 调用延迟函数 延迟一毫秒

P0=0xff;//消隐
P2=0xef;//第二个数码管选中 看电路图赋值
P0=table[shi]; 同上
delay(1);

P0=0xff;//消隐
P2=0xf7;//第三个数码管选中
P0=table[bai];
delay(1);

P0=0xff;//消隐
P2=0xfb;//第四个数码管选中
P0=table[qian];
delay(1);
}
/************主函数***********/
void main()
{
init(); 初始化函数
while(1) 大循环
{
display(seconds); 让数码管开始显示 计秒
}
}
这是一个计时器程序 没有小时 是计秒 然后还有分钟 我也是初学者 有什么问题我们可以再讨论 我的邮箱snowleopard331@163.com 有问题发邮件给我一起讨论
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-31
0000H MCS—51系列单片机复位后PC=0000H,即系统复位后从 0000H单元开始执行程序(俗称复位单元)
0003H 外部中断0 中断服务程序入口地址
000BH 定时器/计数器0溢出中断入口地址
0013H 外部中断1入口地址
001BH 定时器/计数器1溢出中断入口地址
0023H 串行口中断入口地址
51和52应该是相通的吧

参考资料:http://zhidao.baidu.com/question/195744036.html

本回答被提问者采纳
第2个回答  2010-12-31
什么特殊单元没听说过!说的清楚一点本回答被网友采纳

8052单片机程序存储器中的六个特殊单元是什么,各有何用途?
define uchar unsigned char 宏定义懂吧 以后unsigned char就用uchar表示了 uchar code table[]= ;编码定义和C中数组定义方法类似 这里主要是为了让数码管显示具体数字而编的 uchar seconds,minute,count1; 定义变量 \/***初始化函数***\/ void init(){ P0=0xff; 这个有电路图才好说 ...

对于8052单片机,地址为90h的物理单元有哪些
1、特殊功能寄存器90H地址为P1口。2、高位寄存器内部RAM90H。3、如果是STC系列的话,内部EEPROM地址有90H 4、如果扩展外部存储器的话,可以有90H地址的扩展ROM或90H的扩展RAM或者90H的外围IO口地址。

8051单片机与8052单片机有什么区别
1)程序存储器(ROM):8051的容量是4KB,8052的容量是8KB;2)数据存储器(RAM):8051的容量是128b,8052的容量是256b;3)可编程定时\/计数器:8051有2个,8052有3个;4)中断源:8051有5个,8052有6个。所有兼容Intel8031指令系统的单片机统称为51单片机。8051单片机是51系列基本型之一,其余还有875...

8052单片机中RAM的高128位与SFR的问题
他们的地址相同,但是却有不同的物理存储区,它是用不同的指令来区分他们的。如果你对计算机体系结构有了解的话,你就会知道在CPU内部也有微解码器,把每个CPU指令分解成一个个最原始最简单的跟硬件相关的微指令,而这都是译码器完成的(也是为什么会存在指令译码这么一个机器周期,关于具体的内容请参考...

8052单片机片内RAM多出了128个单元字节,与SFR所在ROM如何区别寻址_百度...
8052单片机片内RAM多出了128个单元字节,与SFR地址重叠,为了区分寻址的是SFR还是高128字节,规定直接寻址就是操作SFR,间接寻址就是操作高128字节。

单片机内部数据储存地址中的00H 和0FH,FFH代表什么意思。。。F和0是...
表示十六进制数的意思。00H,0FH,FFH是一个十六进制数,它等于0,0FH=15,FFH=255,用于内部数据存储的内存。00H~FFH相当于小数0~255 例如:二进制十六进制十进制 00000000b000h 0000000101h1b 0000001002bh2 00001001b09h9 00001010b010 000010110bh11b 000011000ch12b 00001101b0dh13 00001110b014 ...

...求大神解答。为什么8051单片机的片内程序存储器为4KB,这个4KB是怎么...
这个4KB的片内存储器是厂家设计时嵌入的,至于为什么,恐怕是设计者当时考虑到51当时绝大部分应用代码在4K以内就可以实现,因此从经济方面考虑的结果。这4K的地址是从0000H~0FFFH。

与中断有关特殊功能寄存器有哪些?
对图进行进一步的分析,我们已知,对并行I\/O口的读写只要将数据送入到相应I\/O口的锁存器就可以了,那么对于定时\/计数器,串行I\/O口等怎么用呢? 在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。 1、ACC---是累加器,通常用A表示。这是个什么东西,可不能...

请问单片机和微机有什么区别?各适合应用于什么场合?
1、 什么是单片机?它与个人计算机有什么不同?一台能够工作的计算机要有这样几个部份构成:中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入\/输出设备I\/O(串行口、并行输出口等)。在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板...

8051单片机的存储器分为几个部分?各部分的空间大小为多少
一是数据存储器,二是特殊寄存器8051片内数据存储器除RAM(00-7fh)之外,还有特殊功能寄存其SFR(80H-FFH),两者合起来共有256字节,但是能够真正用来当数据寄存器的只有128字节,也就是RAM。 特殊寄存器是用来存储那些51中已经规定好 了的寄存器 热心网友| 发布于2013-04-10 举报| 评论 3 1 找书吧,没几个人...

相似回答