『壹』 求51單片機代碼 STC15F2K60S2.H
給一種模式答案:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
SETB ET0
SETB EA
MOV R2,#8
MOV A,#0FEH
SJMP $
T0ISR:
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
DJNZ R2,T0E
MOV P1,A
RL A
T0E:
RETI
END
『貳』 什麼是STC單片機
STC系列單片機是宏晶科技生產的單時鍾/機器周期(1T)的單片機。
它是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8-12倍。內部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換(250K/S),針對電機控制,強干擾場合。
這種工藝的存儲器用戶可以用電的方式瞬間擦除、改寫。而且STC系列單片機支持串口程序燒寫。顯而易見,這種單片機對開發設備的要求很低,開發時間也大大縮短。寫入單片機內的程序還可以進行加密。
(2)stc單片機代碼擴展閱讀
單片機技術的開發
(1)CPU開發。
開發單片機中的CPU匯流排寬度,能夠有效完善單片機信息處理功能緩慢的問題,提高信息處理效率與速度,開發改進中央處理器的實際結構,能夠做到同時運行2-3個CPU,從而大大提高單片機的整體性能。
(2)程序開發。
嵌入式系統的合理應用得到了大力推廣,對程序進行開發時要求能夠自動執行各種指令,這樣可以快速准確地採集外部數據,提高單片機的應用效率。
(3)存儲器開發。
單片機的發展應著眼於內存,加強對基於傳統內存讀寫功能的新內存的探索,使其既能實現靜態讀寫又能實現動態讀寫,從而顯著提高存儲性能。
(4)計算機開發。
進一步優化和開發單機片應激即分析,並應用計算機系統,通過連接通信數據,實現數據傳遞。
『叄』 STC15W408AS單片機初始化代碼應該如何寫
stc15w408as單片機的定時器T0和stc89c52rc基本相同,程序可以用,但是,stc15w408as 定時器T0的方式0 是特有的,與stc89c52rc不同。只要原程序是用定時器T0的方式1,就可以直接用了。
而stc15w408as 是沒有定時器T1的,變成了定時器T2,使用就不同了。是stc15w408as所特有的。
『肆』 求講解這段STC15單片機的代碼,外部中斷2讓LED燈亮
「為什麼按下外部中斷鍵就能讓LED燈亮一下」
因為程序裡面一旦進入外部中斷,就把P1.0管腳翻轉一下,如果接了LED就會有亮滅的變化。
「P10=!P10 是什麼意思」、
將P1.0管腳的輸出電平翻轉。
「為什麼我改成P20=!P20就報錯」
因為程序里只定義了P10,P20這個符號沒有定義,你需要自己添加 sbit P20 = P2^0;
「開發板的外部中斷焊接到單片機的P1.0引腳,如果我焊接的不是P1.0引腳,那P10=!P10還好使嗎」
外部中斷跟P1.0管腳沒有關系。你重新看電路圖去……
「為什麼頭文件加上#include「STC15.H」就會報錯」
因為編譯器找不到這個文件在哪兒,當然就會嗷嗷叫喚……
『伍』 STC 89c52rc單片機代碼
/**********************為網友解答常式************************
波特率設置為9600,無奇偶校驗,晶振11.0592MHz,STC89C52.
單片機通過串口接收到 字元「a",單片機反饋」a"並打開p1.0 =1 。
如果單片機持續30S 沒收到「a" P1.0= 0 。
存在問題:1.延時、埠 要根據你的實際情況改一下參數。
2.上電or復位後,第一次P1.0=0的轉換時間要比以後動作轉換時間長,不一致。之後正常。
******************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar buf;
sbit out = P1^0;
void delay(unsigned char s) //11.0592MHz下,帶參數延時
{
unsigned char i, j,k;
for(k=s;k>0;k--)
{
i = 180;
j = 73;
do
{
while (--j);
} while (--i);
}
}
void main(void)
{
SCON=0x50; //設定串口工作方式
PCON=0x00; //波特率不倍增
TMOD=0x20; //定時器1工作於8位自動重載模式, 用於產生波特率
EA=1;
ES = 1; //允許串口中斷
TL1=0xfd;
TH1=0xfd; //波特率9600
TR1=1;
while(1)
{
delay(100); //延時,此處要根據實際修改成你需要的數值
out = 0; //正常上電,延時後,會使P1.0等於0
//從串口收到a後, 會使P1.0馬上等於1,
//然後如果在延時時間內沒有再次接收到a ,那程序將再次使P1.0等於0,循環。。。
}
}
/*********************************************************
串列中斷服務函數
*********************************************************/
void serial() interrupt 4
{
ES = 0; //關閉串列中斷
RI = 0; //清除串列接受標志位
buf = SBUF; //從串口緩沖區取得數據
switch(buf)
{
case 0x61: out = 1;break; //接受到字元a,使P2.0為高(0x61為"a"的ASCII碼十六進制形式)
// case 0x32: out = 0;break; //接受到字元2,使P2.0為低(測試使用)
default: break; //接受到其它數據,無動作
}
ES = 1; //允許串口中斷
}
『陸』 STC單片機自帶AD代碼問題
同學,你的問題有問題
你是想問STC系列單片機的AD問題還是串口問題
你上面這段程序是51單片機串口初始化程序而不是AD程序。
51單片機串口初始化為
void COM_Init(void)
{
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
PCON |= 0x80;
TH1 = 0xFD;
ES=1;EA=1;
TR1 = 1;
TI = 1;
}
AD轉換程序
//定義與ADC有關的特殊功能寄存器
sfr ADC_CONTR =0xC5;
sfr ADC_DATA =0xC6;
sfr ADC_LOW2 =0xBE;
sfr P1M0 =0x91;
sfr P1M1 =0x92;
sbit p20 =P2^0;
void STC90CxxAD_delay(int timer) //延時函數
{
while(timer--);
}
int Ad_Change(char channel) //AD轉換
{
int AD_Result_Temp = 0 ;
P1 = 0xff; //將P1口置高,為A/D轉換作準備
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打開A/D轉換電源
P1M0 = 0x03; //0000,0011用於A/D轉換的P1.x口,先設為開漏
P1M1 = 0x03; //0000,0011P1.0--P1.1先設為開漏。斷開內部上拉電阻
STC90CxxAD_delay(20); //20
ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
ADC_CONTR = ADC_CONTR|(channel); //設置當前通道號
STC90CxxAD_delay(1); //延時使輸入電壓達到穩定
ADC_DATA = 0; //清A/D轉換結果寄存器
ADC_LOW2 = 0;
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,啟動轉換
do { ; }
while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D轉換結束
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D轉換
AD_Result_Temp = ((AD_Result_Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);
//保存返回AD轉換的 結果
STC90CxxAD_delay(1); //
return AD_Result_Temp;
}
已調試通過,望對你有用
『柒』 51單片機stc12c5a代碼解釋
#include "STC12C5A60.h" //頭文件
void Mcu_Init(void); //Mcu_Init()函數聲明,聲明必須在主函數前,函數名前為void表示無返回值,括弧內void表示無行參。(單片機初始化)
sbit out=P2^0; //位定義P2.0,為標識符out
sbit cs=P2^2; //位定義P2.2,為標識符cs
sbit clk=P2^3; //位定義P2.3,為標識符clk
sbit dat=P2^4; //位定義P2.4,為標識符dat
sbit key=P3^3; //位定義P3.3,為標識符key
void long_delay(void); //long_delay函數聲明(長延時)
void short_delay(void); //short_delay函數聲明(短延時)
typedef unsigned char BYTE; //定義標識符BYTE為unsigned char類型名
void write7279(BYTE Command,BYTE Data); //write7279函數聲明,括弧內的是形參
unsigned char read7279(unsigned char); //read7279函數聲明,括弧內的是形參
void send_byte(unsigned char); //send_byte函數聲明,括弧內的是形參
char tcount=0; //定義char型 變數tcount,並給初值0
unsigned char fh,fl; //定義unsinged char 型變數fh和fl,
int leon; //定義int型變數leon
『捌』 如何把STC單片機里的代碼讀出來
這個需要單片機解密
單片機解密
單片機解密又叫單片機破解,晶元解密,IC解密,但是這嚴格說來這幾種稱呼都不科學,但已經成了習慣叫法,我們把CPLD解密,DSP解密都習慣稱為單片機解密。單片機只是能裝載程序晶元的其中一個類。能燒錄程序並能加密的晶元還有DSP,CPLD,PLD,AVR,ARM等。當然具存儲功能的存儲器晶元也能加密,比如DS2401 DS2501 AT88S0104 DM2602 AT88SC0104D等,當中也有專門設計有加密演算法用於專業加密的晶元或設計驗證廠家代碼工作等功能晶元,該類晶元業能實現防止電子產品復制的目的。
單片機攻擊者藉助專用設備或者自製設備,利用單片機晶元設計上的漏洞或軟體缺陷,通過多種技術手段,就可以從晶元中提取關鍵信息,獲取單片機內程序這就叫單片機解密。
解密過程
揭去晶元封裝
侵入型攻擊的第一步是揭去晶元封裝(簡稱「開蓋」有時候稱「開封」,英文為「DECAP」,decapsulation)。
有兩種方法可以達到這一目的:
第一種是完全溶解掉晶元封裝,暴露金屬連線。
第二種是只移掉硅核上面的塑料封裝。
第一種方法需要將晶元綁定到測試夾具上,藉助綁定台來操作;第二種方法除了需要具備攻擊者一定的知識和必要的技能外,還需要個人的智慧和耐心,但操作起來相對比較方便,完全家庭中操作。
晶元上面的塑料可以用小刀揭開,晶元周圍的環氧樹脂可以用濃硝酸腐蝕掉。熱的濃硝酸會溶解掉晶元封裝而不會影響晶元及連線。該過程一般在非常乾燥的條件下進行,因為水的存在可能會侵蝕已暴露的鋁線連接 (這就可能造成解密失敗)。
清洗晶元
接著在超聲池裡先用丙酮清洗該晶元以除去殘余硝酸,並浸泡。
尋找保護熔絲的位置並破壞
最後一步是尋找保護熔絲的位置並將保護熔絲暴露在紫外光下。一般用一台放大倍數至少100倍的顯微鏡,從編程電壓輸入腳的連線跟蹤進去,來尋找保護熔絲。若沒有顯微鏡,則採用將晶元的不同部分暴露到紫外光下並觀察結果的方式進行簡單的搜索。操作時應用不透明的紙片覆蓋晶元以保護程序存儲器不被紫外光擦除。將保護熔絲暴露在紫外光下5~10分鍾就能破壞掉保護位的保護作用,之後,使用簡單的編程器就可直接讀出程序存儲器的內容。
對於使用了防護層來保護EEPROM單元的單片機來說,使用紫外光復位保護電路是不可行的。對於這種類型的單片機,一般使用微探針技術來讀取存儲器內容。在晶元封裝打開後,將晶元置於顯微鏡下就能夠很容易的找到從存儲器連到電路其它部分的數據匯流排。由於某種原因,晶元鎖定位在編程模式下並不鎖定對存儲器的訪問。利用這一缺陷將探針放在數據線的上面就能讀到所有想要的數據。在編程模式下,重啟讀過程並連接探針到另外的數據線上就可以讀出程序和數據存儲器中的所有信息。
藉助顯微鏡和激光切割機破壞保護熔絲
還有一種可能的攻擊手段是藉助顯微鏡和激光切割機等設備來尋找保護熔絲,從而尋查和這部分電路相聯系的所有信號線。由於設計有缺陷,因此,只要切斷從保護熔絲到其它電路的某一根信號線(或切割掉整個加密電路)或連接1~3根金線(通常稱FIB:focused ion beam),就能禁止整個保護功能,這樣,使用簡單的編程器就能直接讀出程序存儲器的內容。
雖然大多數普通單片機都具有熔絲燒斷保護單片機內代碼的功能,但由於通用低檔的單片機並非定位於製作安全類產品,因此,它們往往沒有提供有針對性的防範措施且安全級別較低。加上單片機應用場合廣泛,銷售量大,廠商間委託加工與技術轉讓頻繁,大量技術資料外瀉,使得利用該類晶元的設計漏洞和廠商的測試介面,並通過修改熔絲保護位等侵入型攻擊或非侵入型攻擊手段來讀取單片機的內部程序變得比較容易。
『玖』 STC單片機
STC是中國自己產的一種單片機,是宏晶科技生產的單時鍾/機器周期(1T)的單片機。
STC單片機是高速/低功耗/抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8-12倍。內部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換(250K/S),針對電機控制,
通用I/O口(36/40/44個),復位後為:准雙向口/弱上拉(普通8051傳統I/O口),可設置成四種模式:准雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏,每個I/O口驅動能力均可達到20mA,但整個晶元最大不要超過120mA;
(9)stc單片機代碼擴展閱讀
STC公司的1T增強系列因他不但和8051指令,管腳完全兼容,而且其片內的具有大容量程序存儲器且是FLASH工藝的,如STC12C5A60S2單片機內部就自帶高達60K FLASHROM,
這種工藝的存儲器用戶可以用電的方式擦除、改寫。而且STC系列單片機支持串口程序燒寫。顯而易見,這種單片機對開發設備的要求很低,開發時間也大大縮短。寫入單片機內的程序還可以進行加密,可以很好地保護勞動成果。
參考資料來源:網路-STC12C5A60S2