本帖最后由 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:
|