本帖最后由 hayden0 于 2019-4-5 21:06 编辑
在废了牛二虎之力后,终于找到该型号单片机的demo程序,按照Demo写了个LED点灯程序。但发现程序并没按照写的执行,原来是我踩中了第一个坑。
坑1:
写的LED闪烁程序不闪烁,处于常亮状态。
原来是写的延时函数延时太短,后来用STC-ISP软件的延时计算器自动生成的延时函数解决了!
void Delay500ms() //@6.000MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 16;
j = 57;
k = 12;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
由于我没用外部晶振,使用的是内部24M的HRC振荡器,一开始并不知道单片机的默认系统频率,所以试了好几次才发现6MHz时比较吻合。
8051指令集选择STC-Y6。
坑2:
选择3.3V供电后程序不工作,LED点不亮!
一番周折才发现,是烧录设置的问题,默认状态LVR低电压复位设置的是4.3V,所以当3.3V供电的时候,单片机自然处于低压复位状态而无法正常工作。
解决:我这里设置成2.9V后重新烧录程序就正常了。
从这个设置页面也证实默认系统频率的确是6MHz!
关键代码:
void LED_Init(void)
{
P0CON|=0x01;//设置P0.0为推挽输出模式
P0PH&=0xFE;//不上拉
}
void LED_Toggle(void)
{
LED=~LED;
Delay500ms();
}
千呼万唤始出来,点灯成功GIF:
|