没有合适的资源?快使用搜索试试~ 我知道了~
单片机C语言编程基础及实例.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 9 浏览量
2022-07-13
08:27:08
上传
评论
收藏 205KB DOC 举报
温馨提示
试读
50页
单片机C语言编程基础及实例.doc
资源推荐
资源详情
资源评论
第 1 页
基础知识:51 单片机编程基础第一节:单数码管按键显
示第二节:双数码管可调秒表第三节:十字路口交通灯
第四节:数码管驱动第五节:键盘驱动第六节:低频频
率计第七节:电子表第八节:串行口应用
基础知识:51 单片机编程基础
单片机的外部结构:
1. DIP40 双列直插;
2. P0,P1,P2,P3 四个 8 位准双向 I/O 引脚;(作为 I/O
输入时,要先输出高电平)
3. 电源 VCC(PIN40)和地线 GND(PIN20);
4. 高电平复位 RESET(PIN9);(10uF 电容接 VCC 及 RESET,
即可实现上电复位)
5. 内置振荡电路,外部只要接晶体至 X1(PIN18)和 X0
(PIN19);(频率为主频的 12 倍)
6. 程序配置 EA(PIN31)接高电平 VCC;(运行单片机内部
ROM 中的程序)
7. P3 支持第二功能:RXD、TXD、INT0、INT1、T0、T1
单片机内部 I/O 部件:(所为学习单片机,实际上就是编程控制
以下 I/O 部件,完成指定任务)
1. 四个 8 位通用 I/O 端口,对应引脚 P0、P1、P2 和 P3;
第 2 页
2. 两个 16 位定时计数器;(TMOD,TCON,TL0,TH0,TL1,
TH1)
3. 一个串行通信接口;(SCON,SBUF)
4. 一个中断控制器;(IE,IP)
针对 AT89C52 单片机,头文件 AT89x52.h 给出了 SFR 特殊功能寄
存器所有端口的定义。
C 语言编程基础:
1. 十六进制表示字节 0x5a:二进制为 01011010B;0x6E 为
01101110。
2. 如果将一个 16 位二进数赋给一个 8 位的字节变量,则自
动截断为低 8 位,而丢掉高 8 位。
3. ++var 表示对变量 var 先增一;var—表示对变量后减一。
4. x |= 0x0f;表示为 x = x | 0x0f;
5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量 TMOD 的低四位
赋值 0x5,而不改变 TMOD 的高四位。
6. While( 1 ); 表示无限执行该语句,即死循环。语句后的
分号表示空循环体,也就是{;}
在某引脚输出高电平的编程方法:(比如 P1.3(PIN4)引脚)
代码
第 3 页
1. #include <AT89x52.h> //该头文档中有单片机内部资
源的符号化定义,其中包含 P1.3
2. void main( void ) //void 表示没有输入参数,
也没有函数返值,这入单片机运行的复位入口
3. P1_3 = 1; //给 P1_3 赋值 1,引脚 P1.3 就能
输出高电平 VCC
4. While( 1 ); //死循环,相当 LOOP: goto LO
OP;
注意:P0 的每个引脚要输出高电平时,必须外接上拉电阻(如 4K7)
至 VCC 电源。
在某引脚输出低电平的编程方法:(比如 P2.7 引脚)
代码
1. #include <AT89x52.h> //该头文档中有单片机内部资
源的符号化定义,其中包含 P2.7
2. void main( void ) //void 表示没有输入参数,
也没有函数返值,这入单片机运行的复位入口
3. P2_7 = 0; //给 P2_7 赋值 0,引脚 P2.7 就能
输出低电平 GND
4. While( 1 ); //死循环,相当 LOOP: goto LO
OP;
第 4 页
在某引脚输出方波编程方法:(比如 P3.1 引脚)
代码
1. #include <AT89x52.h> //该头文档中有单片机内部资
源的符号化定义,其中包含 P3.1
2. void main( void ) //void 表示没有输入参数,
也没有函数返值,这入单片机运行的复位入口
3. While( 1 ) //非零表示真,如果为真则执行下面
循环体的语句
4. P3_1 = 1; //给 P3_1 赋值 1,引脚 P3.1 就能输出
高电平 VCC
5. P3_1 = 0; //给 P3_1 赋值 0,引脚 P3.1 就能
输出低电平 GND
6. } //由于一直为真,所以不断输出高、低、高、
低……,从而形成方波
将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4
= NOT( P1.1) )
代码
1. #include <AT89x52.h> //该头文档中有单片机内部资
源的符号化定义,其中包含 P0.4 和 P1.1
2. void main( void ) //void 表示没有输入参数,
也没有函数返值,这入单片机运行的复位入口
第 5 页
3. P1_1 = 1; //初始化。P1.1 作为输入,必须输
出高电平
4. While( 1 ) //非零表示真,如果为真则执行下面循
环体的语句
5. if( P1_1 == 1 ) //读取 P1.1,就是认为 P1.1
为输入,如果 P1.1 输入高电平 VCC
6. { P0_4 = 0; } //给 P0_4 赋值 0,引脚 P0.
4 就能输出低电平 GND
7. else //否则 P1.1 输入为低电平 GND
8. //{ P0_4 = 0; } //给 P0_4 赋值 0,引脚 P0.
4 就能输出低电平 GND
9. { P0_4 = 1; } //给 P0_4 赋值 1,引脚 P0.
4 就能输出高电平 VCC
10. } //由于一直为真,所以不断根据 P1.1 的输
入情况,改变 P0.4 的输出电平
将某端口 8 个引脚输入电平,低四位取反后,从另一个端口 8 个
引脚输出:( 比如 P2 = NOT( P3 ) )
代码
1. #include <AT89x52.h> //该头文档中有单片机内部资
源的符号化定义,其中包含 P2 和 P3
剩余49页未读,继续阅读
资源评论
celkhn0210
- 粉丝: 1
- 资源: 3万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功