找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STC15开发板部分例程总结

[复制链接]
跳转到指定楼层
楼主
ID:163711 发表于 2017-2-7 09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC15系列例程总结
1、利用软件实现精确延时方法:利用循环指令输出方波,用示波器测量方波周期
2、子函数中定义static类型变量,可以使得变量保存住变量值
3、LED_PORT=~(0x01<<i);在i=0时等价于:LED_PORT=~0x01;i=1、2、3...的分析类似
4、宏定义
//端口操作定义
#define               SET                    1                      //高电平
#define               CLR                    0                      //低电平
//端口操作
#define         HC595_DAT_Clr()      {HC595_DAT=CLR;}
#define         HC595_DAT_Set()     {HC595_DAT=SET;}
5、temp=dis; temp=temp<<8| dig; temp为int类型,该语句实现将两个8位变量合并成一个16字节变量
6、芯片工作之初应加几ms的延时,等待芯片上电稳定
7、DispTemp[4]=Low_Dat/1000;           //低四位千位
       DispTemp[5]=Low_Dat%1000/100;      //低四位百位
       DispTemp[6]=Low_Dat%100/10;         //低四位十位
       DispTemp[7]=Low_Dat%10;                //低四位个位
8、P3=P3|0x1c;要读入P3.2、P3.3、P3.4三个端口先置高,51单片机端口做输入必须先置高
9、IAP_CONTR=0x60;        //启动下载
当STC单片机上电启动后,会先运行内部的ISP监控程序,判断是否有下载命令,如果有,则下载程序。否则运行用户程序。当上位机发送下载命令时P30引脚会出现下降沿低电平。所以在程序中检测P30脚是否有低电平,如果有低电平,就通过软件向单片机的IAP_CONTR控制寄存器中写入60H即可启动ISP监控程序。
10、IAP_CONTR =0x20;    //软件复位,并且从用户程序开始执行。
11、WDT_CONTR =0x3e;
    // 0011,1110 EN_WDT =1,CLR_WDT = 1,IDLE_WDT = 1,PS2 = 1,PS1 = 1,PS0 = 0
    // EN_WDT = 1:启动看门狗定时器
    // CLR_WDT = 1:看门狗将重新计数
    // IDLE_WDT = 1:,看门狗定时器在“空闲模式”计数
// PS2 = 1,PS1 = 1,PS0 = 0:定时4.5511 S    @f=11.0592MHz
WDT_CONTR |= 0x10;
// CLR_WDT = 1:看门狗将重新计数
12、STC15系列单片机有四种端口模式:准双向口、强推挽输出、仅为输入和开漏结构,复位后默认为准双向口。
       P0M1=0xf0;     //1111 0000
       P0M0=0xcc;     //1100 1100
       端口设置结果:
       P0.0和P0.1为准双向口,P0.2和P0.3为强推挽输出,P0.4和P0.5仅为输入,P0.6和P0.7开漏
       结果现象分析:准双向口吸收电流能力强,输出电流能力差;强推挽输出吸收电流和输出电流能力强;仅为输入为高阻,无法吸收电流;开漏吸收电流能力强。由于开发板的电路结构吸收电流的端口接的LED才亮,故接在P0.4和P0.5的端口的LED不亮,其他的都亮。
13、所谓有源和无源是指蜂鸣器内部是否有自带的振荡电路。无源蜂鸣器内部没有振荡电路,通过端口给它施加一定的频率驱动,不同的频率可以发出不同的音调。而有源蜂鸣器内部自带频率固定的振荡电路,一加电就会发出固定音调的声音,无法发出各种不同的音调。
14、PCON|=0x02;     //单片机进入休眠掉电模式,可由外部中断唤醒
15、CCON=0x80;         //初始化PCA控制寄存器
                                     //停止PCA计数器
                                     //清除CF标记
                                     //清除PCA各个模块中断标记
       CCAPM0=0x49;       //初始化PCA的比较/捕获寄存器0
                                     //允许比较功能
                                     //比较匹配时CCF0中断
       CL=0;                     //清除PCA计数器
       CH=0;
       CCAP0L=0x00;        //定时初值50ms        11.0592MHz
       CCAP0H=0xb4;
       CMOD=0x80;         //设置PCA计数器时钟源为Fosc/12
                                     //PCA计数器空闲模式停止计数
                                     //禁止PCA计数溢出中断
16、定时器不可屏蔽的16位自动重装方式为stc15系列单片机特有,移植到其他类型单片机可能不适用。该不可屏蔽中断的自动重装定时功能很有用。当单片机使用操作系统的时候可作为系统的时基。
TMOD |=0x03;    //T0工作于不可屏蔽的十六位自动重装定时方式,/使用位操作,避免对其他定时器产生影响
17、P54端口可以输出时钟信号,输出分频多少由CLK_DIV中的MKCO_S1、MKCO_S0控制,输出的时钟不超过13.5MHz,这是由于STC单片机端口的性能决定的。CLK_DIV中的CLKS2、CLKS1、CLKS0控制单片机内部工作时钟的频率。
18、单片机串口1可以选择定时器T1或T2为波特率发生器。单片机串口2单片机的第二个串口。通过DB9插头输出。该第二串口只能选择定时器2作为波特率发生器,不能使用定时器1做为波特率发生器。
19、该RS485接口使用的是单片机的串口2使用定时器2做为串口2的波特率发生器选择波特率9600,8位数据位,1位停止位,无校验。详细操作见左侧Doc目录下的readme文件,单片机串口为TTL电平,RS485只是硬件上将TTL    转换成RS485电平,程序上与串口程序大体相同。
20、PCA用到以下特殊功能寄存器:CMOD、CCON、CCAPMn、PCA_PWMn、CH、CL、CCAPnH、CCAPnL、AUXR1
21、PWM产生一定占空比波形
CCON=0;     //初始化PCA控制寄存器,停止PCA计数器,清除CF标记,清除PCA各个模块中断,
CL=0;           //清除PCA计数器
CH=0;
CMOD=0x82; //设置PCA计数器时钟源为Fosc/2,PCA计数器空闲模式停止计数,禁止PCA计数溢出中断
CCAP1H=CCAP1L=0x80;//PWM0端口输出50%占空比方波,8位PWM模式最大为256,一半为128,即0x80
CCAPM1=0x42;//PCA模块0工作于8位PWM模式,允许比较器功能,允许PWM输出,禁止CCF0中断
22、

STC15开发板部分例程总结.doc

32 KB, 下载次数: 21, 下载积分: 黑币 -5

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

使用道具 举报

沙发
ID:295805 发表于 2018-7-24 13:46 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

板凳
ID:476348 发表于 2019-3-14 16:11 | 只看该作者
楼主有没有15单片机的无线串口收发的例程啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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