请用T0控制P1.0引脚输出10ms方波,晶振频率为12MHz。方波的实现可以通过5ms将引脚电平翻转一次实现。假设我们T0X12设置为0;设置方法为AUXR=AUXR&7f;计数周期为1us。5ms需要翻转5000次。初值=65536-5000=TH0*256+TL0因此:TH0=(65536-5000)1256TH0=(65536-5000)%256初始化程序可以通过烧录软件获得。但是并不推荐这种方法,自己写的话有利于掌握原理。考试的时候也没有烧录软件
◼ 请用T0控制P1.0引脚输出10ms方波,晶振频率为12MHz。 ◼ 方波的实现可以通过5ms将引脚电平翻转一次实现。 ◼ 假设我们T0X12设置为0;设置方法为AUXR=AUXR&7f; ◼ 计数周期为1μs。5ms需要翻转5000次。 ◼ 初值=65536-5000=TH0*256+TL0 ◼ 因此: ◼ TH0=(65536-5000)/256 ◼ TH0=(65536-5000)%256 ◼ 初始化程序可以通过烧录软件获得。但是并不推荐这种方法,自己写 的话有利于掌握原理。考试的时候也没有烧录软件
//5毫秒@12.000MHzvoid TimerOlnit(void)//定时器时钟12T模式AUXR &= 0x7F;TMOD &= 0xF0;//设置定时器模式//设置定时初值TL0=(65535-5000)%256;//设置定时初值TH0=(65535-5000)/256TFO = 0;//清除TFO标志TR0 = 1;//定时器0开始计时注意:TOX12也可以设置成1。思考此时设置方法
◼ void Timer0Init(void) //5毫秒@12.000MHz ◼ { ◼ AUXR &= 0x7F; //定时器时钟12T模式 ◼ TMOD &= 0xF0; //设置定时器模式 ◼ TL0 = (65535-5000)%256; //设置定时初值 ◼ TH0 = (65535-5000)/256; //设置定时初值 ◼ TF0 = 0; //清除TF0标志 ◼ TR0 = 1; //定时器0开始计时 ◼ } ◼ 注意:T0X12也可以设置成1。思考此时设置方法
中断方式需要打开响应开关#include"stc15f2k60s2.h"#define uchar unsigned char;sbit out=P1^0;void intto0 interrupt 1out=~out;}void main()Timer1lnit();EA=1;ET0=1;while(1);
◼ 中断方式需要打开响应开关 ◼ #include "stc15f2k60s2.h" ◼ #define uchar unsigned char; ◼ sbit out=P1^0; ◼ void intt0() interrupt 1 ◼ { out=~out;} ◼ void main() ◼ { ◼ Timer1Init(); ◼ EA=1; ◼ ET0=1; ◼ while(1); ◼ }
查询方式需要手动清零TFO#include"stc15f2k60s2.h"#define uchar unsigned char;sbit out=P1^0;void main()out=0;Timer1lnitO;while(1)if (TF1==1){TF1=0;out=~out:
◼ 查询方式需要手动清零TF0 ◼ #include "stc15f2k60s2.h" ◼ #define uchar unsigned char; ◼ sbit out=P1^0; ◼ void main() ◼ { ◼ out=0; ◼ Timer1Init(); ◼ while(1){ ◼ if (TF1==1) ◼ {TF1=0; ◼ out=~out; ◼ } ◼ } ◼ }
方式1:方式1与方式0的区别有两点1、不能自动重装2、不能用作可编程时钟输出+12AUXR.7=0SYSclk-+1AUXR.7=1C/T=0TLOTHOInterruptTFO(8Bits)(8bits)CT-1P3.4TOPincontrolTROGATEINTO
方式1:方式1与方式0的区别有两点 1、不能自动重装 2、不能用作可编程时钟输出