单片机入门基础
单片机基础&c语言基础&点亮1个LED灯&LED灯闪烁
单片机用途
凡是与控制或简单计算有关的电子设备都可以用单片机来实现,再根据具体实际情况选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等
工业自动化:数据采集、测控技术。
智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等。
消费类电子产品:洗衣机、电冰箱、空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。
通讯方面:调制解调器、程控交换技术、手机、小灵通等。
武器装备:飞机、军舰、坦克、导弹、航天飞机、鱼雷制导、智能武器等
学习51单片机C语言编程基本知识
电平特性
数字电路中只有两种电平:高和低
单片机为TTL电平: 高 +5V 低 0V
RS232电平:计算机的串口 高 -12V 低+12V
所以计算机与单片机之间通讯时需要加电平转换芯片max232等其他芯片
单片机:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(single chip Microcomputer)也叫微控制器(MCU)。
CPU( Central Processing Unit ):由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM( Random-Access Memory ):用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM (Read-Only Memory):用以存放程序、一些原始数据和表格;
I/O(input/output)口:四个8位并行I/O口,既可用作输入,也可用作输出;
T/C (timer/counter):两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
常用关键字说明
sfr:sfr用来定义特殊功能寄存器
sfr16:定义一个16位的特殊功能寄存器
sbit:定义一个特殊功能寄存器的某一位
bit:定义位变量
code: 指定存储位置位于程序存储器
interrupt:声明中断服务程序
using:指定的寄存器组

基本语法
变量定义
数据类型 变量名
int num1;double num2 = 2;unsigned short num3;
if()语句
if(条件)
{分支}
if(条件)
{分支1}
else
{分支2}
if(x>=0)
{y=y/2;
}
else
{y=y*x;
}
while()语句
while(条件){循环体}
while(i<10){s+=k;
}
for()语句
for(表达式1;条件2;表达式3){循环体}
for(i=0;x!=y;j++){z/=3;
}
函数定义
数据类型 函数名(形参列表){函数体}
int add(int num1,int num2){return num1+num2;
}

1. 电源引脚:Vcc (40脚):电源端,接+5V电源。
Vss(Gnd) (20脚):接地端,接+5V电源地端
2. 外接晶体引脚:XTAL1和XTAL2
89C51内部有一个振荡器和时钟产生电路。
XTAL1(19脚): 片内振荡电路反相放大器输入
XTAL2(18脚):片内振荡电路反相放大器输出 当采用内部时钟时,片外连接石 英晶体和微调电容,产生原始 的振荡脉冲信号。
采用外部时钟时, XTAL1输入 外部时钟脉冲信号, XTAL2悬空.
3. 控制信号引脚:RST、ALE、PSEN、EA
RST (9脚) : 复位信号输入端,高电平有效。
保持两个机器周期高电平时,完成复位操作。
ALE/PROG (30脚) :
地址锁存允许输出端/编程脉冲输入端
正常时,连续输出振荡器频率的1/6正脉冲信号。
访问片外存储器时:
作为锁存P0口低8位地址的控制信号。
对8751片内 ROM编程写入时:作为编程脉冲输入端。
PSN (29脚): 外部程序存储器读选通输出信号
访问片外ROM时,输出负脉冲作为读ROM选通.
常连接到片外ROM芯片的输出允许端(OE)作外部ROM的读选通信号。
EA/Vpp (31脚):
外部程序存储器地址使能输入/编程电压输入端. 平常,接“1”时,CPU访问片内4KB的ROM,当地址超4KB时,自动转向片外ROM中的程序。当接“0”时,CPU只访问片外ROM。 第2功能Vpp 对8051编程时,编程电压输入端。
4. 输入/输出端口引脚 P0、P1、P2、P3
4个8位的并行输入/输出端口,共32个引脚。作为通用输入/输出端口
sbit-特殊功能位声明,也就是声明某一个特殊功能寄存器的某一位
例如:sbit T1=SCON^1(SCON是一个8位寄存器,SCON^1表示这个8位寄存器的次低位,最低位是SCON^0;SCON^7表示这个寄存器的最高位。)
&该语句的功能就是将SCON寄存器的次低位声明为T1,以后若要对SCON寄存器的次低位操作,则可直接操作T1
sfr-特殊功能寄存器的数据声明
例如:sfr16 T2=0xCC(声明一个16位的特殊功能寄存器,它的起始地址为0xCC)
点亮一个LED灯
#include //51系列单片机
sbit LED1=P1^0; //P1是一个8位寄存器,^0声明寄存器的最低位,也就是第一位
int main()
{while(1) {LED1=0; //最低位为0,相当于1111 1110(点亮一个LED灯)}}

LED闪烁
第一种方法
#include
sbit LED1=P1^0;void delay(unsigned int time)
{unsigned char i,j;for(i=0;i

第二种方法
#include
void Delay500ms() //这个Dalay函数是从软件延时定时器中复制的c代码
{unsigned char i, j, k;i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);
}void main() //主函数
{while(1){P1=0xFE; //二进制1111 1110转为十六进制为0xFE(1为高电平灯不亮,0为低电平灯亮)delay500ms();P1=0xFF; //二进制1111 1111转为十六进制为0xFFdelay500ms();}
}

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
