登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 用单片机实现流水灯以及keil的debug简介

[复制链接]
发表于 2018-1-28 21:26:48 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 寒假学完单片机视频里的内容
开始时间: 2018-01-28
结束时间:
1.  用单片机实现流水灯
(1)      在新建一个工程后,首先应该想出该如何实现你想要的效果,然后写出程序的大致结构框架。
(2)      首先将每次只让一个小灯亮用16进制表示,例:只让最左边的小灯亮,即是11111110,16进制即是0xFE。其次让每个小灯依次闪烁只需在每个小灯亮之间添加一个延时程序。
(3)      若将8个依次列出会使程序繁琐,所以有一个简单方法:
P0 = ~(0x80 >> cnt); //先写出反码,然后按位取反.
(4)      代码:
#include <STC12C5A60S2.H>           //循环流水灯

   sbit ENLED = P1^1;

void main()
{
    unsigned int i = 0;
    unsigned char t = 0;
    unsigned char cnt = 0;               
    P20 = 0;                                 //使三极管导通的三个引脚赋值
    P21 = 1;
    P22 = 1;
    ENLED= 0;                                  //使74HC245芯片工作
   
    while(1)                     
    {
        P0 = ~(0x01 << cnt);        //设置P0各引脚初值并按位取反
        for(i=0;i<60000;i++);        //非精确延时
        cnt++;                     
        if(cnt >= 8)                       //8个小灯按顺序亮后,
        {
           cnt = 0 ;                        //cnt清零,重新开始
        }
     }
}
2.  用Debug计算非精确延时for语句的时间
(1)点击如图所示红圈中的符号
8.PNG
(2)设置晶振为32,在debug中勾选Use Simulator
9.PNG
10.PNG
(3)点击Start/Stop debug section可以打开或者关闭这个界面,在代码14行和16行设置两个断点。
11.PNG
12.PNG
(4)点击Run,程序运行到第一个断点。时间如下
13.PNG
(5)再次点击Run,程序运行到第二个断点,时间如上。点击restart可以重新开始。
14.PNG
(6)两次时间相减,即可得到延时for语句的时间。
通过Debug还可以观察程序运行情况,更多的功能有待探索。


好懒~~不想说~~~
发表于 2018-1-29 01:23:48 | 显示全部楼层
debug好评,要是iar也有就好了
Carpe.Diem.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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