有关C8051F120和程序的问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:25:18
对不起大家, 小弟有一个问题,
以下有一段程序是C语言来的. 为什麼我在编译它的时候又没有ERROR. 除错时又没有问题, 但是RUN它的时候每次都跑进看问狗去. 我用的是C8051F120, 如果改用AT89C51又没有这个问题, 我已经想了很久但是都想不了. 还有这个程序我本身是想做PWM 的. 但是我怎样才能改变它的占空比呢? 现在只是固定的占空比.
还有如果我是设定了a1是int, 我看书说它是16位, 可是我有辨法找出它低8位跟高8位的地址吗? 然后可以把它放进timer的th0跟tl0 吗? 因为我就是找不到它们的地址. (假如我int a1) 哪麼它会在什麼地址呢>?还有我应该看什麼
类型的书好呢?..希望有好心人帮帮我.!!!!!!!!!!!!!!!!!
#include <c8051f120.h>
#include <stdio.h>

sbit wave=P0^0;
bit flag;
unsigned int a1, a2, a3, a4, a5, a6;

void Timer0(void) interrupt 1
{

a3=0xc0;
a4=0x11;

a5=a1-a3;
a6=a2-a4;

wave=~wave;
flag=~flag;
if (flag==1)
{
TL0=0x00;
TH0=a5;
TR0=a6;
}
else
{
TL0=a1;
TH0=a2;
}
}
void main (void)
{
a1=0x90;
a2=0xe8;
flag=0;
wave=1;
TMOD=0x01;
TL0=a1;
TH0=a2;
IT0=1;
EX0=1;
TR0=1;
ET0=1;
E

我用过一段时间的C8051F020,应该是相通的,你查查数据手册,对于看门狗有相对应的控制寄存器,在MAIN函数的开头先把看门狗关闭
至于占空比只要改变定时器的定时时间不就自然改变了占空比?

我不明白 芯片还都没 初始化呢 怎么用?