打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
单片机从入门到送走.第一天下

本来应该搞点电子元件然后装模作样的看看你现象啥的,but,我就懒得弄了,直接调试就行。

调试就是看这些变量有没有按照我们的想法去工作,就是看看寄存器里面的东西。

一开始简单,就看看IO就行。

开了调试以后在上面的外设里面打开

选端口

逻辑分析仪记得大写端口

可以使用了

#include "STC89C5xRC.H"
sbit LED_EN = P2^4;sbit D1 = P0^0;sbit D2 = P0^1;// 上面都是定义要操作的IO口,是具体的一个端口void delay_ms(unsigned int t);
void main(){ LED_EN = 0; // 置低 while (1) { D1=0; D2=1; delay_ms(500); D1=1; D2=0; delay_ms(500); }}void delay_ms(unsigned int t){ unsigned int x, y; for (x = t; x > 0; x--) { for (y = 100; y > 0; y--) { } }}

如果不打断点调试,会在人口处停下。

F11是一步步的走,当到了一个子程序的时候,就进去,然后继续一步步的执行。

叫跟踪

单步呢,和上面的一样,但是跟的没有这么紧。到子函数的时候就当完事了继续下一步运行。

如果你运行到一个子函数里面,比如一个100000的循环,咋办?

运行到退出,全速运行出去。

还有我们感兴趣的蹲点,就运行到这里就行。

看黄色部分

符号列表

SEC是运行一个语句的时间

如果是已经开始调试了,这里灰色的条,点一下就打断点了。

复位后全为1

这是库文件的文档

C:\Keil_v5\C51\INC

这里是51支持的函数头

extern unsigned char _crol_ (unsigned char, unsigned char);

位循环函数,第一个是要处理的字符型变量,后面是循环位数

实例

  1. 常数放片内CODE

  2. 短变量

  3. 使用局部变量

  4. 使用无符号的变量计算

头文件里面自己写的

打勾

sfr使用字节寻址

对寄存器的每一位使用位寻址

关于这个点数码管,其实就是点灯,然后灯做成了不一样的样子,所以还是控制IO的电平。

不过要想点亮灯需要一次点亮若干个管子,所以一组管子的IO状态就是所谓的字形码。

但是一个数码管就占8 个IO,我的天。。。

比如我的就连在了P0口,显示1,就是P0.1,P0.2低电平就行

也就是说:1111 1001 -> F9H,那么2就是A4H

然后就是把这个东西做个表叫段码表。


#include "STC89C5xRC.H"
sbit seg1=P2^0;sbit seg2=P2^1;sbit seg3=P2^2;sbit seg4=P2^3;unsigned char code seg[] ={ 0xC0,0xF9,0xA4,0xB0, 0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x8E}// 共阳段码表void delay_ms(unsigned int t);
void main(){ seg1=0; seg2=0; seg3=0; seg4=0; delay_ms(1); P0=seg[1]; while(1);}void delay_ms(unsigned int t){ unsigned int x, y; for (x = t; x > 0; x--) { for (y = 100; y > 0; y--) { } }}

上面1,2,3,4是4给数码管

第一个段码给P0,就是1

但是这种东西太土豪了,一个数码管8个IO。这样写,4个数码管全亮了。

#include "STC89C5xRC.H"sbit seg1=P2^0;sbit seg2=P2^1;sbit seg3=P2^2;sbit seg4=P2^3;unsigned char code seg[] ={ 0xC0,0xF9,0xA4,0xB0, 0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x8E}unsigned char z;// 共阳段码表void delay_ms(unsigned int t);
void main(){ while(1) { seg4=0; P0=seg[1]; delay_ms(300); P2=0xFF; P0=0xFF; delay_ms(1); seg3=0; P0=seg[2]; delay_ms(300); P2=0xFF; P0=0xFF; delay_ms(1); seg2=0; P0=seg[3]; delay_ms(300); P2=0xFF; P0=0xFF; delay_ms(1); seg1=0; P0=seg[4]; delay_ms(300); P2=0xFF; P0=0xFF; delay_ms(1); }}void delay_ms(unsigned int t){ unsigned int x, y; for (x = t; x > 0; x--) { for (y = 100; y > 0; y--) { } }}

依次显示1~4

我这一天就瞎写。。。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
DS1302+AT89S52+LED时钟程序(C语言源代码+原理图)
单片机入门培训专题(十三) – 按键应用技巧 – 著名的PCB哥
【   】16X16点阵汉字显示 倒计时 proteus仿真 74HC595驱动 带源程序
学习前辈的,自己再土做了个电子钟
用单片机控制步进电机的程序
怎样用keil编写4位数码管显示1234的程序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服