基於stc單片機的AT89S52離線燒錄器程序

2021-01-08 電子產品世界


下面是部分源碼預覽,完整的代碼請到http://www.51hei.com/bbs/dpj-20605-1.html下載
#include "uart.h"
#include "s51pro.h"
#include "myfun.h"

本文引用地址:http://www.eepw.com.cn/article/201611/323824.htm

#include "znfat/znFAT.h"

extern unsigned char OutBuf[4];
extern unsigned char InBuf[4];

unsigned char idata psignbuf[3];

unsigned char code_buf[32];

sfr P1M0 = 0x92;
sfr P1M1 = 0x91; //定義STC12單片機IO模式特殊功能寄存器

struct znFAT_Init_Args idata Init_Args; //初始化參數集合
struct FileInfo idata fileinfo; //文件信息集合

void main()
{
unsigned int idata addr=0,i=0;
unsigned int idata res=0,n_file=0,len=0;

P1M1=0x40;//P16高阻輸入
P1M0=0xa0; //如果使用51單片機來調試SD卡模塊,打開推挽,增強IO驅動能力

UART_Init();
UART_Send_Str("串口設置完畢");

znFAT_Device_Init(); //存儲設備初始化
UART_Send_Str("SD卡初始化完畢");

znFAT_Select_Device(0,&Init_Args); //選擇設備

res=znFAT_Init(); //文件系統初始化

if(!res) //文件系統初始化成功
{
UART_Send_Str("Suc. to init FS");

UART_Put_Inf("BPB_Sector_No:",Init_Args.BPB_Sector_No);
UART_Put_Inf("Total_SizeKB:",Init_Args.Total_SizeKB);
UART_Put_Inf("BytesPerSector:",Init_Args.BytesPerSector);
UART_Put_Inf("FATsectors:",Init_Args.FATsectors);
UART_Put_Inf("SectorsPerClust:",Init_Args.SectorsPerClust);
UART_Put_Inf("FirstFATSector:",Init_Args.FirstFATSector);
UART_Put_Inf("FirstDirSector:",Init_Args.FirstDirSector);
UART_Put_Inf("FSsec:",Init_Args.FSINFO_Sec);
UART_Put_Inf("Next_Free_Cluster:",Init_Args.Next_Free_Cluster);
UART_Put_Inf("FreenCluster:",Init_Args.Free_nCluster);
}
else //文件系統初始化失敗
{
UART_Put_Inf("Fail to init FS , Err Code:",res);
}
//==================================================================

res=znFAT_Open_File(&fileinfo,"/*.bin",n_file,1); //打開文件

while(!res)
{
UART_Put_Inf("Suc. toopenfile ",n_file);
UART_Send_Str("================================");
UART_Send_Str("File_Name(Short 8.3):");
UART_Send_Str(fileinfo.File_Name);UART_Send_Enter();
if(fileinfo.have_lfn) //如果有長名,則輸出長名
{
UART_Send_Str("File_Name(Long Name):");
//中文輸出其UNICODE編碼碼值
i=0;
while(fileinfo.longname[i])
{
if(fileinfo.longname[i]<0x80)
UART_Send_Byte((unsigned char)fileinfo.longname[i++]);
else
{
UART_Put_Hex(fileinfo.longname[i++]);
UART_Send_Byte( );
}
}
UART_Send_Enter();
}
else
{
UART_Send_Str("This file have not Long Name.");;
}
UART_Put_Inf("File_Size:",fileinfo.File_Size);


相關焦點

  • 基於AT89S52單片機的舵機控制系統設計
    摘要:文中設計了一種基於AT89S52單片機的舵機控制系統,單片機通過定時中斷產生脈寬調製信號(PWM)來控制Futaba-S3003舵機轉動。文中給出了系統的電路原理圖和程序設計思路。
  • 基於AT89S52單片機的多功能電子萬年曆
    本系統程序由主程序、中斷服務函數和多個子函數構成。主函數主要完成各子函數和中斷函數的初始化。定時中斷函數主要完成時鐘晶片的定時掃描及鍵盤掃描。時鐘晶片的讀寫函數主要是將時間、日曆信息讀出來,並把要修改具體值寫入時鐘晶片內部。
  • 基於AT89S52單片機和ISD4004語音晶片實現語音播報記事器的設計
    基於AT89S52單片機和ISD4004語音晶片實現語音播報記事器的設計 張裕,劉毅敏,方康 發表於 2020-12-15 17:57:16 引 言
  • STC單片機免斷電下載程序的另一種更簡單的方法
    看到網上有一些STC單片機免斷電下載程序的例子。但是都是要用串口中斷來完成。以下是一個程序片斷本文引用地址:http://www.eepw.com.cn/article/171071.htm拿來說明在調試程序中加入串口初始化代碼,串口中斷代碼即可實現不斷電下載程序TMOD|=0x20;SCON=0x50;TH1=0xfd; //12T時鐘9600bpsTL1=0xfd;TR1=
  • 基於樹莓派的ARM離線燒錄器
    基於樹莓派的ARM離線燒錄器1.前言    做電子開發的小夥伴,離不開給微控制器燒錄軟體的工作。
  • STC12C2052AD單片機AD轉換C語言程序
    首先:這個小程序搞了我兩天,加上焊板子共三天,當然是業餘時間。也有24個小時了。本文引用地址:http://www.eepw.com.cn/article/170915.htm我瞪著電腦兩個晚上,我拆了裝,裝了拆(下載程序不在本板子上)。
  • STC單片機程序下載問題及解決方法
    失敗現象:Chinese:正在嘗試與 MCU/單片機 握手連接 ...打開串口失敗!Chinese: 串口已被其它程序打開或該串口不存在。解決方法:1,檢查USB下載模塊的連接是否正常,模塊上的綠色和紅色LED燈都亮起表示連接正常。綠色LED燈不亮表示USB驅動程序出現問題,可以拔下USB模塊重插一次。
  • STC單片機程序燒錄與ISP下載相關知識
    導讀:本文為您介紹常見串口USB、RS232、UART三者轉換模塊及其電路原理圖,單片機ISP下載及單片機程序燒錄相關內容,設備連接操作方法。本文引用地址:http://www.eepw.com.cn/article/201710/366385.htm  前面已經說了,單片機相當於一個微型電腦,所以單片機是可以執行程序的。
  • 基於AT89S51單片機的PID溫度控制系統設計
    1.2系統工作流程  系統開始工作時,首先由單片機控制軟體發出溫度讀取指令,通過數字溫度傳感器採集被控對象的當前溫度值並送顯示屏實時顯示。然後,將該溫度測量值與設定值T比較,其差值送PID控制器。PID控制器處理後輸出一定數值的控制量,經D/A轉換為模擬電壓量,控制被控對象進行加熱。
  • STC單片機和STM32單片機哪個更適合入門?
    由於在國內,STC系列的51單片機市場佔有率最高,參考資料和使用人群眾多,因此,在下文中,我們將以STC單片機作為51單片機的代表。正如,STM32單片機作為基於ARM公司Cortex-M3內核單片機的代表一樣。在這裡STC單片機是51單片機的代表,STM32是基於ARM公司Cortex-M3內核單片機的代表。
  • 51單片機玩轉物聯網基礎篇01-開發環境搭建
    前言上至航天,下至兒童玩具,凡事沾一點智能的東西,都離不開單片機的身影......,本文開始,我們學習STC89C52單片機,這款單片機屬於8051系列單片機,51單片機作為入門級單片機不僅在教學實驗中應用廣泛,在實際項目中應用亦是十分廣泛。
  • 如何編寫STC單片機的ISP協議
    STC單片機包含兩個Flash塊,在一塊Flash中運行的程序可對另一塊Flash進行擦除和重新編程.一般都將ISP程序存放在容量較小的一塊Flash中(Block1),而將用戶代碼存放在容量較大的一塊Flash中(Block0).Block1中的ISP程序對Block0中的用戶代碼進行擦除和重新編程.在做STC單片機解密或是使用的朋友都知道,在STC單片機的程序存儲區後,還有一段大約
  • 學習單片機,為什麼我建議你從51單片機開始
    隨著物聯網的大潮,單片機的學習又有高潮,可是面對品類繁多的單片機,不知從何學起,不知道到底學習單片機需要哪些知識;是從8位單片機、16位單片機,還是現在正流行的32位單片機開始學習呢。因此經過我的教學經驗,如果想開始學習單片機,最好從51單片機開始學起,我都推薦STC系列的51單片機學習。原因就是一句話,因為51系列單片機簡單,學習起來也簡單。但是簡單不代表它功能少,51單片機雖然簡單,但體系是完備的。所以當你學會51單片機,會非常快速入門其它單片機學習。
  • 基於Proteus仿真的AVR單片機串口程序
    以前在Proteus上做過51的串口仿真沒有成功,昨天再次嘗試atmega16的串口仿真居然成功了;當然仿真是最簡單的,實際做事的時候需要加上max232晶片,但仿真時就不需要了,本文引用地址:http://www.eepw.com.cn/article/201610/311532.htm  程序功能
  • 基於AT89C55WD單片機和程式語言實現繼電保護實驗系統的設計
    基於AT89C55WD單片機和程式語言實現繼電保護實驗系統的設計 員瑩 , 韓應江 發表於 2020-11-26 10:10:44 1 引 言 隨著電力工業的迅速發展
  • 關於PL2303用於STC單片機下載的討論
    測試的STC單片機:STC12LE5A60S2USB轉串口晶片:PL2303HX(E版或F版)本文引用地址:http://www.eepw.com.cn/article/201611
  • 基於proteus的51單片機開發實例30-模塊化程序設計
    基於proteus的51單片機開發實例30-模塊化程序設計1.1.設計思路本實例的設計思路是:將《基於proteus的51單片機開發實例29-單總線DS18B20的讀寫》中的程序代碼按照延時功能、LCD1602液晶顯示功能、DS18B20的讀寫控制功能這三個部分,使用模塊化程序設計的方法,將這三個部分分別封裝為三個.c和.h文件
  • 在8位單片機中使用Google Protobuf
    基於PIC8位單片機實現紅外遙控器的設計 ,普通遙控器為20元,差價80元,如果用於高端VOD業務的捆綁銷售.假設包月資費為20元,