单片机c语言程序_第1页
单片机c语言程序_第2页
单片机c语言程序_第3页
单片机c语言程序_第4页
单片机c语言程序_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一讲如何开关控制发光管闪烁(无开关)如何开关控制发光管闪烁(有开关)第二讲模拟交通灯驱动数码管按键控制 LED移位说明: 按下 K1 时,P0口 LED左移一位。   按下 K2 时,P0 口 LED右移一位。    按下 K3 时,P2 口 LED右移一位。      按下 K4 时,P2 口 LED左移一位。数码管滚动显示单个数字说明:数码管从左到右依次滚动显示1-6播放生日快乐歌说明:程序运行时播放生日快乐歌,未使用定时器中断,所有频率完全用延时实现。第三讲1、 片内RAM:00H0FFH2、80H0FFH:128b

2、ytes直接寻址:SFR,共22个寄存器,其中21个可字节寻址,PC不可寻址,11个可位寻址。3、 简介寻址:User RAM总结:在51C语言中,DATA:直接寻址的00H0FFH。IDATA:间接寻址的00H0FFH。lDATA的00H-7FH区间与IDATA 的00H-7FH区间是重叠的,即该区域既可直接寻址,也可间接寻址。l80H以上的存储器实际是两个各自独立的存储区,要用不同的寻址方式进行访问。l80H以上的存储区是否可用取决于芯片的选择。4、片外数据存储器l通过总线端口和其他I/O口扩展外部数据RAM,其最大容量可达64K字节。l在片外数据存储器中,数据区和扩展的I/O口是统一编址

3、的。在51的C语言中,XDATA :指外部数据存储空间(0000H-0FFFFH)。5、 在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 f

4、osc 12 /晶振频率#define time0 1000 /定时1ms,这里的最小单位是us(微秒)unsigned int idata time0_times;/使用间接寻址的片内RAMunsigned char data time0_h,time0_l; /使用直接寻址的片内RAM main()time0_times = 8192 time0 * fosc / 12;/213=8192time0_h = time0_times / 256;time0_l = time0_times % 256;/运行结果:在示波器上产生方波2、定时器方式2、计数模式的使用说明:单片机的晶振频率为12M

5、Hz,利用T0方式2进行计数,T0引脚(P3.4)的3个下降沿使得P1.0引脚上电平翻转一次。方式字:TMOD=06H计数初值: TC=M-C C是三个下降沿 TC = 28 3 = 253 = 0FDH TH0 = TL0 =0FDH用程序观察中断号与地址的对应关系/中断程序入口认识 #include <reg51.h>char i;void main(void) /主程序 i=0; while(1);void int0(void) interrupt 0 /INT0中断服务程序 i = 1; void time0_int(void) interrupt 1 /T0中断服务程序

6、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/

7、12。方式1:10位为一帧的异步串行通信方式。(考、图)/ 串行口方式1的输出波形观察#include <reg51.h>void main(void) SCON = 0x40; /串口方式1 TMOD = 0x20; /定时器方式字,T1方式2 TL1 = 0xf3; /定时初值,0xf3对应2400波特 TH1 = 0xf3; TR1 = 1; /启动T1 SBUF = 0x55; while(1);方式2:11位为一帧的异步串行通信方式 。/ 串行口方式2的输出波形观察#include <reg51.h>void main(void) SCON = 0x80;/串

8、口方式2 TB8 = 0; SBUF = 0x55; while(1);方式3:除波特率外,与方式2完全相同,方式2固定波特率,方式3可变波特率。/ 串行口方式3的输出波形观察#include <reg51.h>void main(void) SCON = 0xc0; /串口方式3 TMOD = 0x20; /定时器方式字,T1方式2 TL1 = 0xf3; /0xf3对应2400波特 TH1 = 0xf3; TR1 = 1;/启动T1 TB8 = 0; SBUF = 0x55; while(1);方式1连续发送数据0x55:/ 串行口方式1的输出波形观察#include <

9、reg51.h>void main(void) SCON = 0x40;/串口方式1 TMOD = 0x20; /定时器方式字,T1方式2 TL1 = 0xf3; /定时初值,0xf3对应2400波特 TH1 = 0xf3; TR1 = 1;/启动T1 EA = 1; /总中断允许 ES = 1; /允许串口中断 SBUF = 0x55; while(1);void serial_int(void) interrupt 4 /串口中断服务程序 SBUF = 0x55; TI = 0;/清串口发送中断标志 方式0的应用:用串行口方式0实现串并转换/ 串行口方式0的使用#include &l

10、t;reg52.h>#define uchar unsigned char#define uint unsigned int sbit shift = P10;/延时 void DelayMS(uint x) uchar t; while(x-) for(t=0;t<120;t+); void main(void) uchar sdata;SCON = 0x03;/置工作方式0并标志位shift = 0;while(1)RI = 0;/清接收标志,准备接收 REN = 1;/允许串口接收shift = 1; while(RI = 0);/接收结束,RI=1REN = 0;/禁止串口接收 sdata = SBUF;SBUF = sdata; TI = 0;/清发送标志,准备发送while(TI = 0);/接收结束,TI=1shift = 0;DelayMS(300); / 串行口方式1的使用#include <reg52.h>#include <stdio.h>void main(void) SCON = 0x52;/串口方式1、允许接收 TMOD =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论