|
你說(shuō)的“用新版本燒錄BUG太多,以前成熟的產(chǎn)品只要重新編譯過(guò)就會(huì)出錯(cuò),后面只簡(jiǎn)單的控制下LED燈的亮滅,從推挽改為雙向,再?gòu)碾p向改為推挽,都會(huì)出錯(cuò)(燈怎么也不亮了)”嚇我一跳,真要是這樣,那么我編的程序也要出問(wèn)題了,我只有8腳的STC8G1K08A和20腳的STC8H1K08,就用STC8H1K08測(cè)試,把所有I/O口從推挽改為雙向,再?gòu)碾p向改為推挽,讓LED亮滅一次,沒(méi)有發(fā)現(xiàn)錯(cuò)誤啊,我用的就是stc-isp-v6.90D最新版,無(wú)論是仿真還是直接燒片都沒(méi)有問(wèn)題,下面是我用到的測(cè)試程序,IRC頻率僅用1.2M
#include <STC8.h>
void delay ( void ) ;
void main (void)
{
while ( 1 )
{
P1M1 = 0 ; P1M0 = 0xff ; // P1 為推挽輸出
P1 = 0xff ;
delay ( ) ;
P1 = 0 ;
delay ( ) ;
P1M1 = 0 ; P1M0 = 0 ; // P1 為準(zhǔn)雙向口
P1 = 0xff ;
delay ( ) ;
P1 = 0 ;
delay ( ) ;
P1M1 = 0 ; P1M0 = 0xff ; // P1 為推挽輸出
P1 = 0xff ;
delay ( ) ;
P1 = 0 ;
delay ( ) ;
P3M1 &= ~0xfc ; P3M0 |= 0xfc ; // P3.2-3.7 為推挽輸出
P3 |= 0xfc ;
delay ( ) ;
P3 &= ~0xfc ;
delay ( ) ;
P3M1 &= ~0xfc ; P3M0 &= ~0xfc ; // P3.2-3.7 為準(zhǔn)雙向口
P3 |= 0xfc ;
delay ( ) ;
P3 &= ~0xfc ;
delay ( ) ;
P3M1 &= ~0xfc ; P3M0 |= 0xfc ; // P3.2-3.7 為推挽輸出
P3 |= 0xfc ;
delay ( ) ;
P3 &= ~0xfc ;
delay ( ) ;
P5M1 &= ~0x30 ; P5M0 |= 0x30 ; // P5.4-5.5 為推挽輸出
P5 |= 0x30 ;
delay ( ) ;
P5 &= ~0x30 ;
delay ( ) ;
P5M1 &= ~0x30 ; P5M0 &= ~0x30 ; // P5.4-5.5 為準(zhǔn)雙向口
P5 |= 0x30 ;
delay ( ) ;
P5 &= ~0x30 ;
delay ( ) ;
P5M1 &= ~0x30 ; P5M0 |= 0x30 ; // P5.4-5.5 為推挽輸出
P5 |= 0x30 ;
delay ( ) ;
P5 &= ~0x30 ;
delay ( ) ;
}
}
void delay ( void )
{
unsigned char i , j ;
for ( i = 0 ; i < 255 ; i ++ )
{
for ( j = 0 ; j < 255 ; j ++ )
{
}
}
} |
|