mdsk.net
当前位置:首页 >> 编程题 设MCSQ单片机系统中晶振频率为12MHz,欲... >>

编程题 设MCSQ单片机系统中晶振频率为12MHz,欲...

这个太简单了,给你个方法,你自己弄吧,不会多看看书.1 使能定时器2 使能定时器中断3 编写中断程序 我估计你是觉得1秒的时间,定时器达不到,你可以在中断里面再自己写个计数,或者开启计数器2,这样两两相乘,时间就能到1秒钟了.要做到精确的定时,就要用计数器2,然后在Keil里可以看到时间,再对定时器进行微调就好了.

TMOD=0x10;TH1=0xFC;L1=0x18;即为高电平时间为1ms.最大定时时间:2^16毫秒t=(2^16-计数初始值)X晶振周期X12.

ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN:MOV TMOD,#01HMOV TH0,#HIGH(65536-60000)MOV TL0,#LOW(65536-60000)SETB TR0SETB ET0SETB EASJMP $T0ISR:CLR TR0MOV TH0,#HIGH(65536-60000)MOV TL0,#LOW(65536-60000)SETB TR0CPL P1.3RETIEND

DELAY: MOV R2,#35 DELAY1: MOV R3,#198 NOP NOP DELAY2: MOV R4,#250 DJNZ R4,$ DJNZ R3,DELAY2 DJNZ R2,DELAY1 RET 误差为242us.

void timer0inpt(void) ; static unsigned int i = 0 ; main() { p1^0 = 0 ; p1^1 = 0 ; tmod = 0x11; auxr = (auxr|0x80); th0 = 0xf8; tl0 = 0x30;//这个地方,自己仔细算一下.. tr0 = 1; et0 = 1; ea = 1; while(1); } void timer0inpt() interrupt 1 using 1 { th0 = 0xf8;

主程序里这样设置 TMOD=0x10;//定时器1作为定时器用 TH1=(65536-50000)/256; TL1==(65536-50000)%256; EA=1;//开总中断 ET1=1;//允许定时器1中断 TR1=1;//启动定时器1 中断程序如下:void timer1()interrupt 3//注意:定时器1的中断序号为3 { TH1=(65536-50000)/256; TL1==(65536-50000)%256; P1.7=~P1.7; }

中断服务函数就不用写了吧,就写个初始化函数:void inition(){TOMD=0x01;//选择定时器0并选择工作方式1TH0=(65536-50000)/256;TL0=(65536-500000)%6;EA=1;ET0=1;TR0=1;}这样初始化就没问题了,另外要实现1S延时,需要在中断函数里加个变量自增,因为我定义的是50ms中断一次,那么这个变量值自增到20后就代表1s时间到,清零这个变量之后方可写你的服务程序.希望我的回答能帮助到你.

这个比较简单,我给你个计算公式,希望我的回答对你有帮助!300hz计数公式1 / 300hz = 0.00333us12m晶振一个周期1us3333 / 2 = 1666.5 四舍五入后 等于1667定时器0模式1 = 65536 - 1667 = 63869 十六进制 = f97d th0 = 0xf9;tl0 = 0x7d;定时器中断一次取反一下数据就得到一个周期300hz频率50hz计算公式1 / 50hz = 0.02ms20000 / 2 = 10000;65536 - 10000 = 55536; 十六进制 = d8f0;th0 = 0xd8;tl0 = 0xf0;

T=1/f=50US void Timer0Init(void) //100微秒@12MHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0x9C; //设置定时初值 TH0 = 0xFF; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 } 之后在中断里写入P01=~P01; 就好了

DELAY1S:MOV R2,#10 DLY1:MOV R3,#200 DLY2:MOV R4,#248 DJNZ R4,$ DJNZ R3,DLY2 DJNZ R2,DLY1 RET

网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com