单片机问题

1、如果单片机的时钟频率为12MHz 要求定时器T0工作方式在0,分别实现50ms,10ms,5ms的定时时间,那该怎样设置TH0及TL0?
2、如果单片机的时钟频率为12MHz 试用单片机定时方式产生频率为50KHz的等宽矩形方波,怎样编程?
3、假定A、B两机以方式1进行串行数据通信,其波特串为1200,系统主频为12MHz,编写程序将A机片外RAM 1000H~10FFH单元数据块通过行口传送到B机片外RAM 2000H~20FFH单元中去
要汇编的程序0.0

10个财富值你问这么多问题!!!!!!!!!!!!!!!
1、如果单片机的时钟频率为12MHz 要求定时器T0工作方式在0,分别实现50ms,10ms,5ms的定时时间,那该怎样设置TH0及TL0?

#include "reg51.h"
unsigned int YSJS=0;
unsigned int TIME;
void Timer0Init(void) //5毫秒@12.000MHz
{
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xC0; //设置定时初值
TH0 = 0x63; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA =1; //开总中断
}
void main(void)
{
TIME=1;//TIME=1定时5mS,TIME=2定时10mS,TIME=10定时50mS
Timer0Init()
while(1)
{
}
}
void TIMER0(void) interrupt 1 //定时器0中断函数使用默认寄存器组
{
YSJS++;
if(YSJS==TIME)YSJS=0;
}

2、如果单片机的时钟频率为12MHz 试用单片机定时方式产生频率为50KHz的等宽矩形方波,怎样编程?
#include "reg51.h"
sbit OUT=P1^0;
void Timer0Init(void) //10uS@12.000MHz
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x02; //设置定时器模式
TL0 = 0xEC; //设置定时初值
TH0 = 0xEC; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA =1; //开总中断
}
void main(void)
{
Timer0Init()
while(1)
{
}
}
void TIMER0(void) interrupt 1 //定时器0中断函数使用默认寄存器组
{
OUT=!OUT;
}

3、假定A、B两机以方式1进行串行数据通信,其波特串为1200,系统主频为12MHz,编写程序将A机片外RAM 1000H~10FFH单元数据块通过行口传送到B机片外RAM 2000H~20FFH单元中去
这个太麻烦了,不玩了。追问

我怕你们没人答,0.0,告诉我第三题怎么做,再给你提高悬赏。。。。。我要汇编

追答

我就是手工汇编练出来的,请耐心等待吧。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-06-09

    配置下T0的工作模式,然后装载50ms的初值

    程序如下:
    ORG 0000H
    AJMP MAIN
    ORG 001B
    AJMP SERVE
    ORG 0030H
    MAIN:MOV TMOD,#10H;设置定时器工作方式1
        MOV TH1,#0B1H
        MOV TL1,#0D0H;
        SETB ET1;
        SETB TR1;
        SETB EA;开启中断
        SJMP $
    SERVE:CPL P1.7;
         CLR TF1;
         MOV TH1,#0B1H
         MOV TL1,#0D0H;
         RETI;

相似回答