4091|7

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

单片机,初级问题,大家指教。初学者,大家指教了。谢谢了。 [复制链接]

MCS—51系列单片机存储器包括片内ROM(或EPROM)和RAM外, 另外还有128个字节的RAM区作为特殊功能寄

存器(SFR)区。 片内、 片外程序存储器和数据存储器各自总容量为64 KB。

--------------------是总共64k,还是每个64k?


=====================================================================================================

3.25

与DB伪指令一样,当16位数据项或项表超过一行后,下一行同样以DW开始。

--------------什么意思?地址对齐?

=====================================================================================================
【例4-3源程序】
            ORG   0000H
              LJMP  MAIN
              ORG   0030H
MAIN:          CLR    C        ;利用ADDC指令前一定要考虑CY位
             MOV   A,31H    ;进行加法运算一定要将其中一个加数                     存放到A中
            ADD   A,33H
            MOV   35H,A      ;低8位相加后存放在35H单元
            MOV   A,30H
            ADDC  A,32H      ;高位相加必须考虑低位相加后的进位
            MOV   34H,A      ;高8位相加后存放在34H单元
            SJMP  $


----------------------ORG 把程序定位到0030H了,也就是下面的代码在0030H开始存放,而其中的运算

还在31H、33H、等存放,那么不是互相冲突了码?
======================================================================================================

试根据R0中的序号 (OOH-0FH), 控制程序转移到不同的分支程序去,设有 16 个分支程序分别为PROG0~

PROG15。



【例4-8源程序】
                ORG             0000H
                          LJMP            MAIN               
                          ORG             0030H
  MAIN:          MOV            A,R0
                           RL                    A
                    MOV           DPTR,#JMPTAB
                    JMP                   @A+DPTR
JMPTAB:            LJMP            PROG0
                    LJMP            PROG1
                ……….
                     LJMP             PROG15



为什么R0要循环左移一位呢?
====================================================================================================
定时基准:单片机中的晶振提供一个精确的定时基准。由单片机的晶振经过12分频后获得的一个脉冲源,

即采用机器周期作为定时基准,如果晶振为12M,则定时基准为1us


--------------12分频是什么东西?机器周期,定时基准都是什么?
====================================================================================================
例6.4  用T0定时,选择工作模式0,由单片机P1.0输出占空比为50%、周期为2ms的方波,晶振频率为12M



源程序如下:   ORG    0000H
                          LJMP   MAIN
                          ORG    000BH
                          LJMP   INT_TIME0
                          ORG    0030H
MAIN:                 MOV    TMOD, #00H                        ;设置工作方式
                          MOV    TH0,  #0E0H            ;设初始值
                          MOV    TL0,  #18H
                          SETB    TR0                    ;启动定时器
                          SETB    EA                     ;开放定时器中断
                          SETB    ET0
                          SETB    P1.0
                          LJMP    $
INT_TIME0:            MOV    TH0,  #0E0H                       ;对定时器重新赋值
                          MOV    TL0,  #18H
                          CPL     P1.0
                          RETI
---------------------50%的占空比,周期为2ms的方波。这个是怎么算出来的?怎么进行设置的?



====================================================================================================

例6.7  用T1定时,选择工作模式1,由单片机P1.0输出50Hz的方波,晶振频率=12M。


源程序如下:
                ORG    0000H
                  LJMP   MAIN
                  ORG    0030H
MAIN:           MOV   TMOD,#10H               ;设置T1为模式1
                SETB   TR1                     ;启动定时
LOOP:         MOV   TL1,#0D8H              ;送初值
               MOV   TH1,#0F0H
                       JNB    TF1,$                   ;查询定时时间到否
                       CLR    TF1                      ;产生溢出,清标志位
                     CPL    P1.1                      ;取反
                       SJMP   LOOP                    ;重复循环


-----------------------------这个把P1.1取反是做什么?50HZ的方波是通过哪里设置的?


====================================================================================================
====================================================================================================
====================================================================================================


各位大侠,指点一下,小弟初学,有很多不懂,有点崩溃,大家帮帮忙吧,谢谢了。

最新回复

这一版块,太没人气了,是不是大家都成大侠了 如果成大侠了,也常回家看看嘛,家里太冷清了 据说努力顶帖也是一种美德,但我只想大家常回家看看 毕竟每天都有新手需要帮忙,而我能帮的只能是把帖子顶起来  详情 回复 发表于 2008-4-4 01:02
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
把P1.1取反是做什么
--------------------------
你不取反试试能得到方波???崩溃是应该的
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
是总共64k,还是每个64k? 是每个
什么意思?地址对齐?  字节(字)对齐
不冲突,寄存器立即数区别
问题太多了看不清
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
--------------------是总共64k,还是每个64k?

每个64K
但是,现在有分页技术,可以让16位的地址线寻址到更大的存储器空间

ORG 把程序定位到0030H了,也就是下面的代码在0030H开始存放,而其中的运算

还在31H、33H、等存放,那么不是互相冲突了码?

ORG是对CODE段的定位

MOV 是从RAM寻址

这个应该区别一下MASM汇编
呵呵

--------------12分频是什么东西?机器周期,定时基准都是什么?

分频,这个是机器对晶体响应(具体我也没有学好,问老师,他们总给这个:人家就是这样!我也郁闷)\

其实说白了,就是晶体产生12个方波后,单片机就执行一条指令,这个就是一个机器周期

定时基准:用于确定时间的基准源

剩下的问题,LZ再看看定时器的操作一节就可以了...

嘿嘿
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
楼上大侠

--------------------是总共64k,还是每个64k?  

每个64K
但是,现在有分页技术,可以让16位的地址线寻址到更大的存储器空间

ORG 把程序定位到0030H了,也就是下面的代码在0030H开始存放,而其中的运算  

还在31H、33H、等存放,那么不是互相冲突了码?  

ORG是对CODE段的定位

MOV 是从RAM寻址

这个应该区别一下MASM汇编
呵呵


------------------

是否可以把这个详细解释一下谢谢了。
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

6
 
大家帮忙啊!!!!!!!!!!!!!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
1:楼主要区分好程序存储器与数据存储器,“ORG 0030H”是指之后的指令在程序存储器的30H单元开始存放,而你说的“运算在31H、33H、等存放 ”应该是指运算数据的存放,这是存放在数据存储器中的,这两个是互相独立的存储空间,所以你说的冲突是不可能存在的!片外最大可扩张64K的程序存储器(用16位地址),在扩展时存储器的OE(输出允许)与单片机的PSEN(片外程序存储器取指允许)相连,此外还要用到单片机的ALE连接到地址锁存器控制端,以锁存低8位地址与高八位地址形成16位地址;片外最大可扩张数据存储器器也是64K,扩展数据存储器时用到的控制单片机引脚是WR,RD,与扩展程序存储器不同,因此这两个存储空间也是分开的!
***********************************************************************************************
2:不清楚楼主表达的意思~

**********************************************************************************************
3:看完1就明了~

**********************************************************************************************
4:R0左移一位相当于“序号数*2”,JMPTAB段中中因为每一条LJMP的指令占2个字节地址,所以序号为0的指令地址就是 首地址啦,而序号为1的跳转指令的开始地址应该就是首地址+2了~不过好像每条LJMP指令是占用3个字节地址,SJMP才是两个,书中的程序是不是也有问题?
*******************************************************************************************

5:“12分频”就是某个频率的1/12,时钟周期是时钟脉冲(也是晶振的频率)频率的倒数,也是单片机中最小的时间单位,2个时钟周期为一个状态周期。机器周期是计算机完成一个基本操做所讯的时间(如取指令,储存器读,写等),C51单片机的一个机器周期由6个状态周期构成,所以一个机器周期的时间应该就是12倍时钟周期了。上面的定时基准应该就是以一个机器周期为定时基准了,如你上面所说,晶振频率是12MHz的话,那一个时钟周期就是1/12微秒,那一个机器周期也就是它的12倍1微秒了。
**********************************************************************************************
6:MOV TMOD, #00H这一句设置了T0用做定时器,并工作在方式0,方式0是13位计数器,最大计数值是2的13次方8192,但定时器的初值设定为E018H,即十进制的57368,竟比最大计数值还大!偶也不明了!50%的占空比意思是因为每次都是在计数值满后对P1.0取一次反,所以P1.0的输出的高电平和低电平的时间是一样的,即输出脉冲的时间是整个方波周期的50%。
***********************************************************************************************
7:要输出50HZ的方波,即周期0.02秒,是那你总得半个周期0.01就改变一次P1.1口的输出电平吧,所以计数器的定时时间也就是0.1秒了,方式1是16位计数,最大计数值是2的16次方65536,初值设定为F0D8H也就是61656,每次计数是以一个机器周期为基准的,12M晶振频率的话机器周期就是1微秒,所以计数的时间=(65536-61656)*1微秒~~
**********************************************************************************************

******************由于本人也是初学者,若以上解释有错误之处还请多多见谅!也欢迎大家多多指教****************
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
这一版块,太没人气了,是不是大家都成大侠了

如果成大侠了,也常回家看看嘛,家里太冷清了

据说努力顶帖也是一种美德,但我只想大家常回家看看

毕竟每天都有新手需要帮忙,而我能帮的只能是把帖子顶起来
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表