新闻中心

EEPW首页>嵌入式系统>设计应用> C51单片机学习手记之1:一盏闪烁

C51单片机学习手记之1:一盏闪烁

作者: 时间:2012-10-24 来源:网络 收藏
最近开始学习,可谓磕磕绊绊,因为本人比较笨笨啦...(听听Michael Jackson的《Heal The World》就坚持下来了),不知道对大家是否有用...
闲言碎语不要讲,下面我就来说说这迈出的第一步,我从2010年才接触到单片机,想想比别人晚了10多年,不过没关系,只要有心学习,从0-1很难,但从1到100、1000、...可能就没有那么麻烦了。主要要自学单片机原理、电子线路、汇编语言,C语言,如果你刚好学过,那就恭喜啦。
本文旨在介绍单片机入门的基础知识,为和我一样的新手提供一个交流的平台。仿真所使用单片机为ATMEL公司的AT89C52,软件为PROTEUS和KEIL;只提供原理图和KEIL环境下的注释,希望对广大即将接触单片机的人有所帮助,如果有错误欢迎回帖指出与本人交流或QQ联系(93542746),共同进步。
的LED

点击浏览下一页

本人用Proteus画得原理图如下所示,该电路较简单,在P1.7上接一个发光二极管,为防止电流过大烧坏二极管(LED的Imax=10mA),因此接了一个限流电阻。单片机31引脚(EA/Vpp)要接高电平,因为单片机访问的是下载到单片机内部的程序。
原理图:
点击浏览下一页
汇编程序:
    org 000h
    ajmp main
    org 003h
main:  mov P1,#07fh;7fh的二进制数为01111111,P1.7输出低电平
    acall del;调用延时子程序
    mov p1,#0ffh;ffh的二进制数为11111111,P1.7输出高电平
    acall del
    ajmp main
del:   mov r5,#04h
del1:  mov r6,#0ffh
del2:  mov r7,#0ffh
del3:  djnz r7,del3;r7中内容减1后判断,为0,向下执行;不为0,执行本身
    djnz r6,del2
    djnz r5,del1;共做04h*ffh*ffh次减1,即4*256*256次
    ret
    end
C程序:
#include reg52.h> //通用89C52头文件
/*************************************************************
* IO定义 *
/*************************************************************/
sbit LED = P1 ^ 7;//定义P1.7为LED控制口,低电平LED亮
/*************************************************************
* 毫秒级延时函数 *
调用函数必须给延时函数一个0~65535的延时值对应0MS到65535MS
备 注:应用于1T单片机时i600,应用于12T单片机时i125
/*************************************************************/
void Delay (unsigned int a){//需要输入变量值0~65535
unsigned int i;
while( --a != 0){//i 从0加到125,CPU大概就耗时1毫秒
for(i = 0; i 125; i++);//空指令循环
}
}
/*************************************************************
* 主函数 *
/*************************************************************/
void main (void){
while(1){//无限循环以下程序
LED = ~LED;//取LED相反状态
Delay(150);//延时150ms
}//(0~65535之间)
}


评论


相关推荐

技术专区

关闭