為什麼stc打開程序找不到
⑴ stc isp無法打開程序文件是怎麼回事啊
你上次打開的文件是光碟里的或者是u盤里的,你現在沒有插入,所以他默認尋找你上次的文件夾沒有找到所以就沒有反應,把上次打開文件的U盤插入點擊在改變打開其他的就行了
⑵ 使用STC向單片機下載程序在電腦上找不到COM埠
那就是你筆記本沒有串口!可以買一個usb轉串口的線,安裝上驅動後就可以看到串口埠號了。
可以的,最便宜的是十多元錢,貴的就要幾十了。
裝上驅動在設備管理中查看com是多少,然後在下載程序選擇就可以了。
⑶ 急。。Stc isp下載程序時點擊打開文件沒有反映
目標板重新上電試試。這個可能是STC的老毛病。
⑷ 為什麼STC-isp檢測不到我的單片機
檢測不到單片機有以下幾個原因:
1、串口有問題。
2、串口線有問題。
3、單片機有問題。
4、單片機電路板可能有問題。比較綜合,比如串口電路、復位電路等可能有問題。
5、電源可能有問題。
⑸ STC-ISP安裝後 打開一直顯示正在安裝,並顯示錯誤,找不到源程序
重裝後,在進行關聯配置
⑹ stcisp打開程序文件空白
stcisp打開程序文件空白遇到這種情況可能是板子和電腦的USB轉串口接觸不良,如果點STC—ISP也點不動的情況下,可以採取關掉STC—ISP在重新打開解決。如果嫌麻煩可以直接拔掉板子上的USB介面才重新插一下。
⑺ keil里找不到STC系列的單片機,如何解決
keil里本身是不帶STC系列單片機的,需要你自己添加,添加方法是:運行STC_ISP,點擊KEIL模擬,選擇「添加型號和頭文件到KEIL中」,如圖所示。
⑻ 單片機出了點問題:設備管理器中顯示埠正常但在使用STC-ISP下程序的時候卻找不到埠,檢測不到單片機
分析一下,換埠,重啟電腦都不行,說明不是電腦端的問題。你檢查下單片機端的串口線接線可對?波特率可對?時鍾可對?特別是串口的2.3.5三根線中的地線,最好接上。我有一次連接不上就是因為地線沒接,但有的地線不接也可以。
⑼ 我在運行STC 51系列晶元程序下載軟體(STC_ISP_V479.exe)的時候出現找不到程序包OWC11.MSI,看看下面的圖
我也遇到了這個問題,多點幾下,關掉它就行了,最後它還是自己打開了
如果右擊快捷方式,選擇打開方式,默認打開方式,這樣就可以直接用了,不信你可以試試!!!屢試不爽,自己探索出來的!!!
⑽ keil 軟體中沒有找到 STC90c516RD+怎麼辦啊
我來回答:
其實,STC大部分的單片機都是51內核或是52內核的。所以在選晶元的時候,只要選一款51體系的晶元就可以。我們用STC的時候,選的都是89C51的晶元。
但有一個問題要注意的就是: 在KEIL 模擬的時候,要注意區別,什麼可以模擬,什麼不可以模擬,這個就要求對51體系很懂。但如果你的水平足夠高,可以通過分析程序和藉助串口來判斷,就沒事。不要求模擬。、
還有一個問題就是。大部分的STC的晶元,雖是51體系,但在51基礎上做了很大的改動。比如說,指令系統,雖沒有增減指令個數,但是,在時序上改動特別大。有些指令1個系統時針就完成了。這在延時,和外圍的介面,方面都要特別注意。一定要仔細看宏晶官網的資料。
當然,官網上提供的資料,有些示常式序,不一定就是最好的。很的程序,都寫得很一般。甚至說很爛。不過,思路是對是。所以,示常式序,只是對你起一個指導做用。如果想寫出好的程序,大部分的功能,最好是都要經過測試。
剛看了一下STC90c516RD+ 這晶元的功能並不是很強,只是FLASH達到了61K。當然,如果用到它增強方面的功能的話。就必須會定義特殊功能寄存器。下面附帶了。
二, reg51.頭文件剖析
我們平時寫單片機應用程序的時候,所使用的頭文件大多都是用的的reg51.h或是用reg52.h。會寫C51的人都會用,但對其頭文件內部的定義有所了解的人確並不多。
下面對其內部做詳細解釋,方便讀者作進一步的了解,並能運用各類型號的單片機。因為增強型號的單片機的增強功能都是通過特殊功能寄存器控制。
打開 reg52.h 頭文件,會發現是由大量的 sfr ,sbit的聲明組成,甚至於還有sfr16.其實這樣的聲明都是與單片機內部功能寄存器(特殊功能寄存器)聯系起來的,下面對其做出詳細解釋
sfr: 聲明變數
SFR 聲明一個變數,它的聲明與其它的C變數聲明基本相同,唯一的區別,SFR在聲明的同時為其指定特殊功能寄存器作為存儲地址,而不同於C變數聲明的整型,字元型等等由編譯器自動分配存儲空間。
如reg52.h頭文件,第一條聲明就是sfr P0 = 0x80;
此處聲明一個變數P0,並指定其存儲地址為特殊功能寄存器0x80;,在加入reg52.h頭文件後。編寫應用程序時P0就可以直接使用而無需定義,對P0的操作就是,對內部特殊功能寄存器(0x80對應用MCU的P0口)的操作,可進行讀寫操作。
如果將第一條聲明改為sfr K0 = 0x80; 那麼,如果要把單片機的P0口全部拉低,則不能寫P0=0x00;而應保存後再在應用程序中寫成K0=0x00;否則編譯器會提示「P0為未定義標識符」
使用方法:
sfr [variable] = [address] //為變數分配一個特殊功能寄存器。
1 等號右邊,只能是十進制,十六進制整型的數據常量,,不允許帶操作符的表達式
經典的8051內核支持的SFR地址從0x80H~0xFF 飛利浦80C51MX系列0x180H~0x1FF
2 SFR不能聲明於任何函數內部,包括main函數。只能聲明於函數外。
3 用SFR聲明一個變數後,不能用取地址運算符&獲取其地址, 編譯無法通過,編譯器會提示非法操作。
4 有一點須特別注意,51內核0x80~0xff,為特殊功能寄存器地址區間,但並不是所有的地址都有定義,如果說你所用的MCU晶元上對於某個地址沒有定義,那麼用sfr在定義變數的時候,不要把變數的地址分配到未定義的特殊功能寄存器上,雖然編譯時能通過,用KEIL模擬時貌似是沒有問題,但下載到晶元里運行時,是會出問題的。比如說,向一個未定義的特殊功能寄存器執行讀操作,讀出來的就是一個未知的數。(讀者可自行測試,先把串口通信調通,然後做一個簡單的人機交互。讀出一個數後,再發給計算機,用串口調試助手或是串口監控查看。這用方法在模擬的時候很有用。)所以具體那些特殊功能寄存器能夠用,就要查看你使用的晶元手冊。
5 若遇到增強性的單片機,只要知道其擴展的特殊功能寄存器的地址,用SFR定
就可以很方便進行編程。
sbit: 聲明變數
sbit 同樣是聲明一個變數,和SFR 使用方法類似,但是SBIT是用來聲明一個位變數,因為,在51系列的應用中,非常有必要對SFR的單個位進行存取,而通過bit 數據類型,使其具備位定址功能。
如,在reg52.h中有如下聲明
sfr IE = 0xA8;
sbit EA = IE^7;
sbit ET2 = IE^5; //8052 only
sbit ES = IE^4;
sbit ET1 = IE^3;
sbit EX1 = IE^2;
sbit ET0 = IE^1;
sbit EX0 = IE^0;
所以,對EA的操作即是對IE最高位的操作。
但如果想讓 SP DPL DPH PCON TMOC TL0 TL1 TH0 TH1 SBUF這些特殊功能寄存器具備位定址,採用上述如IE類似的定義,是不行的,雖然修改後,在編譯的時候不會出現錯誤,但只要用到你定義的位變數名時就會出錯。原因是,只有特殊功能寄存器的地址是8的倍數(十六進制以0或8結尾)才能進行位定址。
打開reg52.h頭文件可以看到,所有用sbit聲明了的特殊功能寄存器的地址均是以0或8結尾
如硬要達到上述要求,可用帶參的宏定義來完成。此處不做詳細說明(意義並不大)。
下面對sbit的使用做詳細介紹:
隨著8051的應用,非常有必要對特殊功能寄存器的單個bit位進行存取,C51編譯器通過sbit 數據類型,提供了對特殊功能寄存器的位操作。
以下是sbit的三種應用形式:
一, sbit name = sfr-name^bit-position;
sfr PSW =0xD0;
sfr IE =0xA8;
sbit OV= PSW^2;
sbit CY=PSW^7;
sbit EA= IE^7;
二, sbit name= sft-address^bit-position;
sbit OV =0xD0^2;
sbit CY =0xD0^7;
sbit EA =0xA8^7;
三, sbit name= sbit-address;
sbit OV =0xD2;
sbit CY =0xD7;
sbit EA =0xAF;
現對上述三種形式的聲明做必要的說明
第一種形式sbit name = sfr-name^bit-position;如sbit OV= PSW^2; 當中的這個特殊功能寄存器必須在此之前已經用sfr 定義,否則編譯會出錯。
bit-position范圍從0~7;
第二種形式 sbit name= sft-address^bit-position如sbit OV =0xD0^2; 與第一種形式不同之外在於,此處直接使用PSW的地址.第一種形式須先定義PSW
第三種形式. sbit name= sbit-address 如sbit OV =0xD2 是直接用的OV的地址
OV的地址計算方式,是OV所在的寄存器地址加上OV的bit-position
注意:
不是所有的SFR都可位定址。只有特殊功能寄存器的地址是8的倍數(十六進制以0或8結尾)才能進行位定址,並且sbit聲明的變數名,雖可以是任意取,但是最好不要以下劃線開頭,因為以下劃線開頭的都保留給了C51的頭文件做保留字。
sfr16: 聲明變數
許多8051的派生型單片機,用兩個連續地址的特殊功能寄存器,來存儲一個16bit的值。例如,8052就用了0xCC和0xCD來保存定時/計數寄存器2的高位元組和低位元組。編譯器提供sfr16這種數據類型,來保存兩個位元組的數據。虛擬出一個16bit的寄存器。
如下:
sfr16 T2 = 0xCC
存儲方面為小端存儲方式,低位元組在前,高位元組在後。定義時,只寫低位元組地址,如上,則定義T2為一個16位的特殊功能寄存器。 T2L= 0CCh, T2H= 0CDh
使用方法:
sfr [variable] = [low_address]
1 等號右邊,只寫兩個特殊功能寄存器的低地址,且只能是十進制,十六進制的整型數據常量,不允許帶操作符的表達式
2 SFR不能聲明於任何函數內部,包括main函數。只能聲明於函數外。
3 用SFR聲明一個變數後,不能用取地址運算符&獲取其地址, 編譯無法通過,編譯器會提示非法操作。
4 當你向一個sfr16寫入數據的時候,KEIL CX51 編譯器生成的代碼,是先寫高位元組,後寫低位元組,(可通過返匯編窗口查看)在有些情況下,這並非我們所想要的操作順序。使用時,須注意。
5 當你所要寫入sfr16的數據,當是高位元組先寫還是低位元組先寫非常重要的時候,就只能用sfr 這個關鍵字來定義,並且任意時刻只保存一個位元組,這樣操作才能保證寫入正確。