单片机c语言程序分析,单片机c语言程序分析.doc

第一讲

如何开关控制发光管闪烁(无开关)

如何开关控制发光管闪烁(有开关)

第二讲

模拟交通灯

驱动数码管

按键控制 LED移位

说明: 按下 K1 时,P0口 LED左移一位。

? ?按下 K2 时,P0 口 LED右移一位。

? ?按下 K3 时,P2 口 LED右移一位。

? ?? 按下 K4 时,P2 口 LED左移一位。

数码管滚动显示单个数字

说明:数码管从左到右依次滚动显示1--6

播放生日快乐歌

说明:程序运行时播放生日快乐歌,未使用定时器中断,所有频率完全用延时实现。

第三讲

片内RAM:00H—0FFH

2、80H—0FFH:128bytes

直接寻址:SFR,共22个寄存器,其中21个可字节寻址,PC不可寻址,11个可位寻址。

简介寻址:User RAM

总结:在51C语言中,DATA:直接寻址的00H—0FFH。IDATA:间接寻址的00H—0FFH。

?DATA的00H-7FH区间与IDATA 的00H-7FH区间是重叠的,即该区域既可直接寻址,也可间接寻址。

?80H以上的存储器实际是两个各自独立的存储区,要用不同的寻址方式进行访问。

?80H以上的存储区是否可用取决于芯片的选择。

4、片外数据存储器

?通过总线端口和其他I/O口扩展外部数据RAM,其最大容量可达64K字节。

?在片外数据存储器中,数据区和扩展的I/O口是统一编址的。

在51的C语言中,XDATA :指外部数据存储空间(0000H-0FFFFH)。

在51的C语言中,CODE :指程序地址空间0000H-0FFFFH。

第五讲(考)

1、定时器方式0、定时模式的使用

说明:单片机的晶振频率为12MHz,利用T0方式0产生1ms的定时,在P1.0引脚上输出周期为2ms的方波。

定时初值: TC=M-T/ T计数

T = 1*10-3 ,T计数 = 12/(12x106) = 1*10-6

TC = 213 – 1*10-3/1*10-6 = 213 –1000

= 7192 = 1C18H

TH0 = 1CH , TL0 =18H

用c语言直接计算:

#define fosc 12 //晶振频率

#define time0 1000 //定时1ms,这里的最小单位是us(微秒)

unsigned int idata time0_times;//使用间接寻址的片内RAM

unsigned char data time0_h,time0_l; //使用直接寻址的片内RAM

main()

{time0_times = 8192 –time0 * fosc / 12;//213=8192

time0_h = time0_times / 256;

time0_l = time0_times % 256;}

//运行结果:在示波器上产生方波

2、定时器方式2、计数模式的使用

说明:单片机的晶振频率为12MHz,利用T0方式2进行计数,T0引脚(P3.4)的3个下降沿使得P1.0引脚上电平翻转一次。

方式字:TMOD=06H

计数初值: TC=M-C C是三个下降沿

TC = 28 – 3 = 253 = 0FDH

TH0 = TL0 =0FDH

用程序观察中断号与地址的对应关系

//中断程序入口认识

#include

char i;

void main(void) //主程序

{

i=0;

while(1);

}

void int0(void) interrupt 0 //INT0中断服务程序

{

i = 1;

}

void time0_int(void) interrupt 1 //T0中断服务程序

{

i = 2;

void int1(void) interrupt 2 //INT1中断服务程序

{

i = 3;

}

void time1_int(void) interrupt 3 //T1中断服务程序

{

i = 4;

}

void serial_int(void) interrupt 4 //串口中断服务程序

{

i = 5;

}

第八讲

51串口的三种功能:

串并转换;

插入或滤除格式信息(起始位、校验位和停止位);

波特率的控制。

串口使用的两个要点:

1、确定工作方式;

2、确定传输速率(波特率)

51串口的四种工作方式

方式0:串行移位输入/输出方式

RXD--数据输入输出,TXD--移位时钟脉冲,传输波特率为fosc/12。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值