- 1
- 0
- 约7.18千字
- 约 44页
- 2019-08-29 发布于广东
- 举报
第10章 80C51的C语言程序设计 10.1 单片机C语言概述 采用C51的优点 10.2 C51的数据类型与运算 C51的存储器类型 10.3 C51流程控制语句 条件语句 开关语句 10.4 C51的指针类型 10.5 C51的函数 10.6 C51编程实例 【例10-1】单片机应用系统中,外中断0引脚接一个开关,并行口线P1.0接一个发光二级管。要求:开关闭合一次,发光二极管的状态改变一次。试编写程序 #include “reg51.h” #include “intrins.h” sbit P10=P1^0; void delay(void) {int a = 5000; while(a - - )_nop_( ); } void int_srv(void)interrupt 0 {delay( ); if(INT0 = =0){P10 = ! P10;while(INT0 = =0);} } void main() { P10 = 0; EA = 1; EX0 = 1; while(1); } 定时计数器编程示例 【例10-2】 利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12 MHz。 1、计算计数初值X: N=t/ Tcy =10×10-3/1×10-6=10000 计数器初值应为-10000。即应将 -(10000/256)送入TH0中,-(10000%256)送入TL0中。 2、求T0的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,可取方式控制字为01H 3、程序清单(见下页) #include “reg51.h” sbit P10 = P1^0; void timer0(void)interrupt 1 { P10 = ! P10; TH0 = -(10000/256); TL0 = -(10000%256); } void main(void) { TMOD = 0x01; P10 = 0; TH0 = -(10000/256); TL0 = -(10000%256); EA = 1; ET0 = 1; TR0 = 1; while(1); } 10.6.2 80C51扩展资源的编程 通用并行口编程示例 【例10-3】用81C55作为微型打印机与单片机间的接口电路。 #include “reg51.h” #include “absacc.h” /*含有对XBYTE等绝对地址访问宏的定义*/ #define uchar unsigned char #define COMD8155 XBYTE[0x7f00] #define PA8155 XBYTE[0x7f01] #define PB8155 XBYTE[0x7f02] #define PC8155 XBYTE[0x7f03] sbit BUSY = P3^3; uchar code tab[17] = {0xb8,0xdf,0xbd,0xcc,0x20, 0xb3,0xf6,0xb0,0xe6,0xc9,0xe7,0x20, 0x32,0x30,0x30,0x38,0x0a};/*高教 出版社 2008*/ uchar t1 = 17; void ptr(uchar d) /*打印字符函数*/ { PA8155 = d; PC8155 = 0x00; /*产生选通脉冲*/ PC8155 = 0x01; while(BUSY); } void main(void) { COMD8155 = 0x0f;/*送命令字*/ prt(0x1c); /*送中文打印方式命令字高字节*/ prt(0x26); /*送中文打印方式命令字低字节*/ EA = 1; EX1 = 1; while(1); } void int1(void)interrupt 2 using 1 { uchar i; EA = 0; for(i = 0;i t1;i ++)prt(tab[i]); EA = 1; } A/D转换接口编程示例 【例10-4】 ADC0809与单片机的接口电路如图。 单片机C语言概述 10.1 C51的数据类型与运算 10.2 C51流程控制语句 10.3 C51的指针类型 10.4 C51的函数 10.5 C51编程实例 10.6 10.1.1 C51程序开发过程 编译器能自动完成变量的存储单元的分配 对常用功能模块和算法编制相应的函数,方便移植 C语言
原创力文档

文档评论(0)