首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

20天89C51单片机总结

20天89C51单片机总结

从芯片的内部看的话主要的就两个独立的存储器 ROM,RAM 一个为程序指示,一个为数据处理和存放。编程时通过寻址方式区别ROM,RAM。他们都为64KB的容量。ROM的片内为4KB存储空间。由EA指示是从片外执行程序还是从片内执行。RAM片内为256字节即FFH4个部分。00H~1FH为工作寄存器组。20H~2FH为为寻址空间。30H~7FH为用户RAM区。80H~FFH为特殊寄存器区。有22SFR(这里就不在介绍了)。
说说指令系统吧。MOV MOVX MOVC3个传送指令其中片外存储器是不能直接传送的。3个调用指令AJMP,LJMP,SJMP.分别用于不同的调用范围。逻辑算术指令ANL ,ORL ,XRL.还有加 ADD,减SUBB,乘MUL,DIV。还有很多的指令如交换,跳转,循环,位寻址,布尔处理指令等。
例如下面的循环-跳转指令
MOVR0,#00H
MOV R1,#AAH
MOV R7#0BH
loop:  MOV A ,@R0
         MOV   @R1,A
         INC R0
         INC R1
         DJNZ  R7,loop
         END


这个程序就是执行片内传送功能的。
说说程序的一般流程吧。分为顺序,分支,循环,还有组合嵌套。上面的例题就是循环的一种。
写个分支程序的例题
                MOV A,R1
              RL    A
              MOV DPTR,#data
              JMP  @A +DPTR
data:     AJMP  KK1
             AJMP  KK2
             AJMP KKn

这个指令就是以 data为首地址 R1为偏移量的分支转移,因为AJMP为双字节指令所以要执行RL A
下面在说下中断跟定时吧。
中断涉及的寄存器由 TCON , IE, IP,SCOM.
通过对中断中断标志位的设置区执行中断请求。中断有5个入口地址 03H 0BH 13H 1BH 23H.
例如外部中断一的入口在默认模式下设置为最高优先级
SETB PX1
STEB EX1
STEB  EA
非常简单,有点像闯关游戏每个环节都完成才能执行中断。
下面是定时器,定时器在单片机的运用是非常高的。4种工作模式0 1 2 3
我就用典型的定时器0模式212MHZ的程序编写一个正弦波输出XXMSP1.0。初值就用KKH代替吧。
                                  MOV  P1  ,#FFH  
MAIN:                        MOV  TMOD  ,  #02H
                              MOV   TH0     ,#KKH
                              MOV    LHO    ,#KKH
                              STEB   ET0
                              STEB  TRO
                              STEB   EA
                              AJMP  $

中断程序       TIME0:  CLR  TF0
                               CPL    P1.0
                               RETI.

还有串行口传输了。89C514种模式的传输,其中波特率的设置尤为重要。
涉及寄存器有 TCOM  TDOM   SCOM   SDOM  PCON.
其实89C51还可以用软件模拟总线接口。如SPI  I2C等还有按键的程序设置外部的扩展实在太多了。以后有时间在编写发上来。

科通芯城(www.cogobuy.com中国首个电子元器件自营电商

返回列表