找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3297|回复: 0
打印 上一主题 下一主题
收起左侧

单片机学习小小结

[复制链接]
跳转到指定楼层
楼主
ID:75926 发表于 2015-4-10 19:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机的学习:

        对8位单片机的理解
           1位有8字节,一个字节有8个i/o口,如STC89C51单片机:
           P0.0~P0.7(一位)
           P1.0~P1.7(一位)
           P2.0~P2.7(一位)
           P3.0~P3.7(一位)
           XTAL1  XTAL2(外接晶振电路,但现在的好多单片机内置有晶振电路)
           RST(一位)
           PSEN(一位)
           ALE(一位)
           EA(一位)
          
人类的视觉时间是1/24秒,小于此范围内的视觉时间是感觉不到的。

汇编延时的子程序一:
        DELAY200MS:          ;@12.000MHz
                MOV  30H,#2
                MOV  31H,#134
                MOV  32H,#13
        NEXT:
                DJNZ  32H,NEXT
                DJNZ  31H,NEXT
                DJNZ  30H,NEXT
                RET
               
        DELAY150MS:  ;@12.000MHz
        MOV  30H,#2
        MOV  31H,#40
        MOV  32H,#16    ;未加H则表示为十进制
        NEXT:
        DJNZ  32H,NEXT
        DJNZ  31H,NEXT
        DJNZ  30H,NEXT
        RET

        DELAY100MS:          ;@12.000MHz       
        MOV  30H,#197        
        MOV  31H,#16    ;未加H则表示为十进制                
        NEXT:               
        DJNZ  31H,NEXT        ;自减15次       
        DJNZ  30H,NEXT        ;自减(n-1)*(0-1)= (n-1)*255       
        RET       

注意:
    加“#”号表示一个数,不加则表示一个“物理地址”
                                       

【重点】如何计算延时时间:
        1.利用STC-V6.24中的延时计算器来生成汇编或C代码
                DELAY200MS:                        ;@11.0592MHz
                        PUSH 30H
                        PUSH 31H
                        PUSH 32H
                        MOV 30H,#2
                        MOV 31H,#103
                        MOV 32H,#140
                NEXT:
                        DJNZ 32H,NEXT
                        DJNZ 31H,NEXT
                        DJNZ 30H,NEXT
                        POP 32H
                        POP 31H
                        POP 30H
                        RET

        2.计算得到:
                   ;2014年7月17日17:00:34  8个流水灯的演示
                                ORG 00H
                                MAIN:
                                MOV P2,#0AAH        ;等价于#10101010B(从P2.1~p2.7管脚) 注意:如果汇编语言的数字表示是以字母开头的话,则字母开头要加零(0)如,0FF,0AA等
                                LCALL DELAY200MS
                                MOV P2,#55H                ;等价于#01010101B(从P2.1~p2.7管脚)
                                LCALL DELAY200MS
                                SJMP MAIN
                                DELAY200MS:          ;@12.000MHz
                                        MOV  30H,#2         ;30H表示的是地址,单片机的一段数据缓存内存单元,从30H~7FH共80个这样的数据缓存单元
                                        MOV  31H,#134
                                        MOV  32H,#13   ;未加H则表示为十进制
                                NEXT:
                                        DJNZ  32H,NEXT        ;自减12次
                                        DJNZ  31H,NEXT        ;自减133*(0-1)等价于133*255 = 33915
                                        DJNZ  30H,NEXT        ;自减1*(0-1)*(0-1)= 1*255*255 = 65025
                                        RET                                ;所以总共自减12+33915+65025 =  98952次  每次执行耗时为2us 所以总共耗时为98952*2 = 197904 us  约等于20万us = 0.2s = 200ms
                                END

                                汇编延时的子程序二:
                                DELAY50MS:
                                        MOV 30H,#90
                                        MOV 31H,#158
                                NEXT:
                                        DJNZ 31H,#NEXT
                                        DJNZ 30H,#NEXT
                                        RET
在汇编里";"或"//"可以屏蔽该行的语句
       
SJMP的转移指令范围为256字节       
AJMP的跳转范围为2K
注意:当所要跳转的范围比较长时用AJMP指令       
       
时钟周期 和 指令周期
        在12MHz(兆)的时钟一个周期的时间为1/12us(微秒)
       
在汇编中
    0-1 = ?  结果是255        写一个小程序来验证一下
       
时间的换算单位:
        1秒=1000毫秒(ms)  
        1毫秒=1/1,000秒(s)
        1秒=1,000,000 微秒(μs)
        1微秒=1/1,000,000秒(s)
        1秒=1,000,000,000 纳秒(ns)
        1纳秒=1/1,000,000,000秒(s)
        1秒=1,000,000,000,000 皮秒(ps)
        1皮秒=1/1,000,000,000,000秒(s)
        1s=1000ms  
        1ms=1000us  
        1us=1000ns  
        1ns=1000ps        
对晶振的理解:       
        单片机的晶振堪称为单片机的“心脏”,提供节拍的作用,即单片机工作一次,
        它可能会振动好几次。其频率一般在11.0592MHz左右,即1秒中内单片机会振
        动11.0592M次       
       
三极管的作用:
        1. 开关控制
        2. 信号放大
        3. 电平转换
       
74HC138简称为“三八译码器”
        3-8即是单片机的IO口不够用了,将单片机的3个IO口转换为8个IO口,即3个输入控制了
        8个输出,3个IO口形成8种不同的状态,从而控制相关灯或数码管的亮灭。
       


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表