單片機芯片:STC32G12K128
晶振頻率:24Mhz (STC-ISP)
STC-ISP版本:6.90D
收到STC32降龍棍后立即寫了一個閃燈程序試機
單片機程序如下:
- #include <STC32G.H>
- //STC32G12K128: Code:128k Ram:4k xdata:8k EEProm:128k Addr:0x0000 T0/1/2/3/4
- typedef unsigned char u8; //0 to 255
- typedef unsigned int u16; //0 to 65535
- typedef unsigned long u32; //0 to 4294967295
- void Delay500ms() //@24.000MHz(STC-Y6)
- {
- unsigned char i, j, k;
- _nop_();
- _nop_();
- i = 61;
- j = 225;
- k = 62;
- do
- {
- do
- {
- while (--k);
- }
- while (--j);
- }
- while (--i);
- }
- void main()
- {
- P1M0 = 0;
- P1M1 = 0;
- while(1)
- {
- P1=~P1;
- Delay500ms();
- }
- }
復制代碼
2022-07-25_112400.png (44.39 KB, 下載次數: 58)
下載附件
2022-7-25 13:25 上傳
然而,下載完成后,led沒有反應
等了很久(>5s),led才亮
又等了很久(>5s),led才滅
就懷疑是延時函數有問題
于是用以下函數替換
- void Delay500ms() //@24.000MHz(STC-Y1)
- {
- unsigned char i, j, k;
- _nop_();
- i = 8;
- j = 154;
- k = 122;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
復制代碼
2022-07-25_112635.png (43.61 KB, 下載次數: 58)
下載附件
2022-7-25 13:25 上傳
這樣,閃爍的速度才差不多,但是還是不準
經過查手冊和對比實驗箱演示程序
才知道要設置以下寄存器才能全速運行
- WTST = 0; //設置程序指令延時參數,賦值為0可將CPU執行指令的速度設置為最快
- EAXFR = 1; //擴展寄存器(XFR)訪問使能
- CKCON = 0; //提高訪問XRAM速度
復制代碼
2022-07-25_132842.png (11.38 KB, 下載次數: 73)
下載附件
2022-7-25 13:29 上傳
|