1、 ET0=1; TR0=1; while(1);void timer0() interrupt 1 TH0=(65536-10000-6)/256; TL0=(65536-10000-6)%256; k+; if(k=100) k=0; m+; if(m=8)m=0; P2=tempm;/这个语句是将变量temp左移m位给P2,不改变temp的值。 /如果改成temp=tempvoid timer0(void) interrupt 1using 1 P1_0=! TH0= -1000/256;TMOD=0x01; P1_0=0;TH0= -1000/256;EA=1;ET0=1;TR0=1;d
2、o while(1);例2,设单片机的fosc=6MHz,要求在P1.7脚上的指示灯亮一秒灭一秒.P1_7=0; P1_0=1;TMOD=0x61;TH0= -50000/256;TL0= -50000%256;TH1= -5; TL1= -5;IP=0x08;EA=l;ET1=l; TR0=l;TR1=1;for (;)#include sbit P1_7=P17;void timer0( ) interrupt 1 using 1P1_0=!void timer1( ) interrupt3 using 2P1_7=!P1_7;例3,设单片机的fosc=10MHz,要求在P1.0脚上输出周
3、期为2.5s,占空比20%.#define uchar unsigned charuchar time;uchar period=250;uchar high=50;void timer0( ) interrupt l using 1TH0= -8333/256;TL0= -8333%256;if(+time=high)P1=0;else if(time=period)time=0; P1=1;TMOD=0x01;TH0= -8333/256;do )while(1);#define uint unsigned int uchar time,status,percent,period;bit
4、one_round;uint oldcount,target=500;void pulse(void) interrupt 1using lTH0= -833/256;TL0= -833%256; ET0=l;if(+time=percent)P1=0;else if (time =100)P2=l;void tachmeter(void) interrupt 2 using 2union uint word;structuchar hi;uchar lo;byte; newcount;newcount_byte.hi=TH1;newcount_byte.lo=TLl;period=newco
5、unt.word-oldcounts;oldcount=newcount.word;one -round=1;IP=0x04;TCON=0x54;TH1=0;TL1=0;IE=0x86;if(one_round)if(periodif(percent0)-percent;串行口8051系列单片机有一个标准的串行通信接口,发送数据时由TXD端口送出,接收数据时由RXD端口输入. 内置两个缓冲器SBUF,一个接受缓冲器,另一个是接收缓冲器,可实行全双工的串行通信.近距离可直接用TTL电平,若与计算机通信,则需要将电平转换成RS232电平形式,若需长距离通信可以采用RS485电平形式,通信的数据必须
6、通过软件的编写来完成.一,与串行口有关的SFR1,串行口控制寄存器SCONSM0 SM1 SM2 REN TB8 RB8 TI RI. SM0,SM1:串行口工作方式控制位(见书P158). SM2:多机通信控制位(方式2,3);1只有接收到第9位(RB8)为1,RI才置位;0接收到字符RI就置位. REN :串行口接收允许位;1允许串行口接收;0禁止串行口接收. TB8:方式2和方式3时,为发送的第9位数据,也可以作奇偶校验位. RB8:方式2和方式3时,为接收到的第9位数据;方式1时,为接收到的停止位.发送中断标志;由硬件置位,必须由软件清0.接收中断标志;2,电源控制寄存器PCONSMO
7、D PCON的第7位SMOD是与串行口的波特率设置有关的选择位. SMOD:串行口波特率加倍位.1方式1,3波特率=定时器1溢出率/16;方式2波特率为fosc/32;0方式1,3波特率=定时器1溢出率/32;方式2波特率为fosc/64. 二,串行口的工作方式1. 方式0方式0为移位寄存器输入/输出方式,串行数据通过RXD输入/输出 ,TXD则用于输出移位时钟脉冲.方式0时,收发的数据为8位,低位在前.波特率固定为fosc/12,其中fosc为单片机外接晶振频率.发送是以写SBUF寄存器的指令开始的,8位输出结束时TI被置位.方式0接收是在REN=1和RI=0同时满足时开始的.接收的数据装入SBUF中,结束时RI被置位.移位寄存器方式的也可用于两个单片机之间的通信.和通常9600波特相比,lMHz通信能力对短距离通信很吸引人.2. 方式1方式1是10位异步通信方式,1位起始位(0),8位数据位和1位停止位
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1