久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 從單片機基礎到程序框架(全集PDF) [打印本頁]

作者: 山水間    時間: 2020-9-8 13:52
標題: 從單片機基礎到程序框架(全集PDF)
吳堅鴻先生在21ic論壇上連載的帖子最終整理成的書,前期內容是C語言基礎,后面是51單片機的基礎,文章很有思想深度,不同于市場上所賣的單片機書籍,它從項目開發的角度來寫,有很多內容是一般書籍上沒有的,值得推廣學習。吳堅鴻先生免費把書籍分享給社會,在此感謝他的付出。

從單片機基礎到程序框架(全集 2019pdf版).pdf

4.21 MB, 下載次數: 728, 下載積分: 黑幣 -5


作者: 神出沒    時間: 2020-9-9 10:15
這個作者真的好偉大。要是有目錄就完美了
作者: yygdzjs    時間: 2020-9-9 10:49
講的比較仔細,初學者有可能說教程單片機比較老了.我們學習的是思路.
國產的51單片機 增強型51比較多些. 模塊功能的寄存器稍作修改就可以.
例如:賽元的SC92F8003

/*
*****************************************************
* 文件名: main.c
* 備注: 主函數
* 測試功能 :C語言學習程序 P15發送數據
   UART0 串口發送數據后,占小部分data,其它IO資源釋放
     //--sc92f8003.h--
          //P1PH |= 0x20; // P15 上拉使能(測試上拉可用可不用)
                SCON |= 0x50; //模式1 10位全雙工;允許接收     
                tmp = 16000000L / 9600; //
                   //--使用定時器1--
                //T2CON &= 0xCF; //選擇定時器1(默認)
                TH1 = (u8)(tmp >> 8); //定時器1計數器的 高8位
                TL1 = (u8) tmp; //        //定時器1計數器的 低8位
          //IPUART = 1; // 串口高優先級 使能
                //EA = 1; //使能總中斷
                //EUART = 0; //串口中斷 使能               
          //TI = 0;       

//--注銷部分開始---
* 測試功能:UART0串口功能 IO輸入(P17 P00 P01) 輸出(P12 P13 P14)
* 功能說明:
* 硬件資源:
//芯片設置內部時鐘 16MHZ ,看門狗除能 低電壓2.9V  復位腳做 P17IO
//                sbit LED1 = P1^2; // LED口
//                sbit LED2 = P1^3; //
//                sbit LED3 = P1^4; //
//                sbit KEY_INPUT1 = P1^7; // 按鍵口
//                sbit KEY_INPUT2 = P0^0; //
//                sbit KEY_INPUT3 = P0^1; //
//                UART0 串口
//                ConfigUART0(0,9600); //-串口配置參數-引腳 P15(TX0) P16(RX0)
//                // ConfigUART0(1,9600); //串口配置參數-引腳 P20(TX0A) P11(RX0A)
//--注銷部分結束---
*
*****************************************************
*/
  //#include "REG52.H"
#include "sc92f8003.h"
void View(unsigned long u32ViewData);
void to_BufferData(unsigned long u32Data,unsigned char *pu8Buffer,unsigned char u8Type);
void SendString(unsigned char *pu8String);
/*---C語言學習區域的開始。-----------------------------------------------*/
void main() //主函數
{
                unsigned char a; //定義一個變量 a。
                unsigned int b; //定義一個變量 b。
                unsigned long c; //定義一個變量 c。
                a=100; //給變量 a 賦值。
                b=10000; //給變量 b 賦值。
                c=1000000000; //給變量 c 賦值。
                View(a); //在電腦串口端查看第 1個數 a。
                View(b); //在電腦串口端查看第 2個數 b。
                View(c); //在電腦串口端查看第 3個數 c。
       
                while(1)
                {
                }
}
/*---C語言學習區域的結束。-----------------------------------------------*/
void View(unsigned long u32ViewData)
{
                static unsigned char Su8ViewBuffer[43];
                code unsigned char Cu8_0D_0A[]={0x0d,0x0a,0x00};
                code unsigned char Cu8Start[]={"開始..."};
                static unsigned char Su8FirstFlag=0;
                static unsigned int Su16FirstDelay;
                if(0==Su8FirstFlag)
                {
                        Su8FirstFlag=1;
                        for(Su16FirstDelay=0;Su16FirstDelay<10000;Su16FirstDelay++);
                        SendString(Cu8Start);
                        SendString(Cu8_0D_0A);
                        SendString(Cu8_0D_0A);
                }
                to_BufferData(u32ViewData,Su8ViewBuffer,1);
                SendString(Su8ViewBuffer);
                to_BufferData(u32ViewData,Su8ViewBuffer,2);
                SendString(Su8ViewBuffer);
                to_BufferData(u32ViewData,Su8ViewBuffer,3);
                SendString(Su8ViewBuffer);
                to_BufferData(u32ViewData,Su8ViewBuffer,4);
                SendString(Su8ViewBuffer);
                SendString(Cu8_0D_0A);
}


void to_BufferData(unsigned long u32Data,unsigned char *pu8Buffer,unsigned char u8Type)
{
                code unsigned char Cu8Array1[]={0xB5,0xDA,0x4E,0xB8,0xF6,0xCA,0xFD,0x00};
                code unsigned char Cu8Array2[]="十進制:";
                code unsigned char Cu8Array3[]="十六進制:";
                code unsigned char Cu8Array4[]="二進制:";
                static unsigned char Su8SerialNumber=1;
                static unsigned int Su16BufferCnt;
                static unsigned int Su16TempCnt;
                static unsigned int Su16TempSet;
                static unsigned long Su32Temp1;
                static unsigned long Su32Temp2;
                static unsigned long Su32Temp3;
                static unsigned char Su8ViewFlag;
               
                if(1==u8Type)
                {
                        for(Su16BufferCnt=0;Su16BufferCnt<7;Su16BufferCnt++)
                        {
                                pu8Buffer[Su16BufferCnt]=Cu8Array1[Su16BufferCnt];
                        }
                        pu8Buffer[2]=Su8SerialNumber+'0';
                        pu8Buffer[Su16BufferCnt]=0x0d;
                        pu8Buffer[Su16BufferCnt+1]=0x0a;
                        pu8Buffer[Su16BufferCnt+2]=0;
                        Su8SerialNumber++;
                        return;
                }
                else if(2==u8Type)
                {
                        for(Su16BufferCnt=0;Su16BufferCnt<7;Su16BufferCnt++)
                        {
                                pu8Buffer[Su16BufferCnt]=Cu8Array2[Su16BufferCnt];
                        }
                        Su32Temp1=1000000000;
                        Su32Temp2=10;
                        Su16TempSet=10;
                }
                else if(3==u8Type)
                {
                        for(Su16BufferCnt=0;Su16BufferCnt<9;Su16BufferCnt++)
                        {
                                pu8Buffer[Su16BufferCnt]=Cu8Array3[Su16BufferCnt];
                        }
                        Su32Temp1=0x10000000;
                        Su32Temp2=0x00000010;
                        Su16TempSet=8;
                }
                else
                {
                        for(Su16BufferCnt=0;Su16BufferCnt<7;Su16BufferCnt++)
                        {
                                pu8Buffer[Su16BufferCnt]=Cu8Array4[Su16BufferCnt];
                        }
                        Su32Temp1=0x80000000;
                        Su32Temp2=0x00000002;
                        Su16TempSet=32;
                }

          Su8ViewFlag=0;
                for(Su16TempCnt=0;Su16TempCnt<Su16TempSet;Su16TempCnt++)
                {
                                Su32Temp3=u32Data/Su32Temp1%Su32Temp2;
                                if(Su32Temp3<10)
                                {
                                        pu8Buffer[Su16BufferCnt]=Su32Temp3+'0';
                                }
                                else
                                {
                                        pu8Buffer[Su16BufferCnt]=Su32Temp3-10+'A';
                                }

                                if(0==u32Data)
                                {
                                        Su16BufferCnt++;
                                        break;
                                }
                                else if(0==Su8ViewFlag)
                                {
                                        if('0'!=pu8Buffer[Su16BufferCnt])
                                        {
                                                Su8ViewFlag=1;
                                                Su16BufferCnt++;
                                        }
                                }
                                else
                                {
                                        Su16BufferCnt++;
                                }       
                                Su32Temp1=Su32Temp1/Su32Temp2;
                }
                pu8Buffer[Su16BufferCnt]=0x0d;
                pu8Buffer[Su16BufferCnt+1]=0x0a;
                pu8Buffer[Su16BufferCnt+2]=0;
}


void SendString(unsigned char *pu8String)
{
        static unsigned int Su16SendCnt;
        static unsigned int Su16Delay;
        u32 tmp; //
         //-REG52.H-
        //SCON=0x50;
        //TMOD=0X21;
        //TH1=TL1=256-(11059200L/12/32/9600);
        //TR1=1; //sc92f8003 芯片 不能開啟
        //ES = 0;
        //TI = 0;
       
    //--sc92f8003.h--
          //P1PH |= 0x20; // P15 上拉使能(測試上拉可用可不用)
                SCON |= 0x50; //模式1 10位全雙工;允許接收     
                tmp = 16000000L / 9600; //
                   //--使用定時器1--
                //T2CON &= 0xCF; //選擇定時器1(默認)
                TH1 = (u8)(tmp >> 8); //定時器1計數器的 高8位
                TL1 = (u8) tmp; //        //定時器1計數器的 低8位
          //IPUART = 1; // 串口高優先級 使能
                //EA = 0; //使能總中斷
                EUART = 0; //串口中斷 使能               
          TI = 0;       
       
        for(Su16SendCnt=0;Su16SendCnt<43;Su16SendCnt++)
        {
                if(0==pu8String[Su16SendCnt])
                {
                        break;
                }
                else
                {
                        SBUF =pu8String[Su16SendCnt];
                        //for(Su16Delay=0;Su16Delay<800;Su16Delay++);//-REG52.H-延時
                        for(Su16Delay=0;Su16Delay<2400;Su16Delay++);//-sc92f8003.h-延時
                        TI = 0;
                }
        }
}

作者: liyezhao2019    時間: 2020-9-9 11:00
有目錄版的 在他群文件里
作者: 山水間    時間: 2020-9-11 16:23
yygdzjs 發表于 2020-9-9 10:49
講的比較仔細,初學者有可能說教程單片機比較老了.我們學習的是思路.
國產的51單片機 增強型51比較多些.  ...

謝謝您的回復呢,真的覺得這本書很不錯,一般的單片機書籍講解的沒有這么仔細,而且單片機部分也只涉及最基本的,這本書中單片機部分把項目中能用到的知識也做了深入講解,真希望有更多的人能夠看到
作者: 51heixc    時間: 2020-9-13 10:12
很好的學習資料,感謝作者
作者: ziyueboy    時間: 2020-9-13 14:40
中間水準的設計開發人員,看吳師傅的教程,也會有很多的啟發,這本書不會教你太多如何寫代碼,而是教你單片機思路。是不可多得神作。我看了好多遍,每一次都有所啟發,特別是在不注意的邊邊角角,總有些許收獲。神作
作者: 7631001    時間: 2020-9-15 19:53
偉大的作者!
作者: tieq1952    時間: 2020-9-16 07:56
吳堅鴻先生奉獻社會!!!
作者: 山水間    時間: 2020-9-29 13:19
希望不要沉啊,讓更多需要的人看到
作者: chhome    時間: 2020-9-29 21:36
不可多得神作
作者: 山水間    時間: 2020-10-27 11:18
這么好的東西竟然沉了,大家需要的趕緊下啊
作者: daye520    時間: 2020-10-27 21:42
還能下載吧?謝謝分享
作者: luo_qinfeng    時間: 2022-6-22 22:23
很好的資料
作者: jackduan2018    時間: 2022-9-3 16:51
看了第一頁 捐權聲明 我就感受到了作者胸懷的寬廣。瀏覽了一下內容,圖片標注的很認真詳細,應該對我們很有幫助。感謝作者,感謝樓主分享!
作者: iamluckman    時間: 2022-9-4 00:52
這本書看過好幾次,每次都有新的啟發

作者: 370008208    時間: 2022-9-5 17:40
佩服,佩服,下載來學習
作者: l156613673    時間: 2022-9-5 23:04
正在無頭緒的學習單片機,謝謝分享
作者: henge-stone    時間: 2022-9-6 00:08
佩服,佩服,下載來學習
作者: fuyan13    時間: 2022-9-6 08:55
感謝吳老師!
作者: zyb572168    時間: 2022-11-30 16:28
還沒入門,學習看看
作者: wwh2382    時間: 2022-12-1 12:50
傳一個帶目錄的,方便查看 手把手教你單片機程序框架—吳堅鴻(共1209頁pdf下載).pdf (3.96 MB, 下載次數: 57)



作者: zyb572168    時間: 2023-4-20 16:28
正好在學習51單片機,學習學習
作者: joyb    時間: 2023-4-21 17:35
已下載,拜讀中
作者: ufb    時間: 2024-1-16 09:26
wwh2382 發表于 2022-12-1 12:50
傳一個帶目錄的,方便查看

U are hero!
作者: 王秋冬    時間: 2024-4-6 11:01
多謝樓主,仔細看看資料確實有幫助的。
作者: cayboy1988    時間: 2025-4-13 16:09
講的比較仔細,初學者有可能說教程單片機比較老了.我們學習的是思路. 國產的51單片機 增強型51比較多些. 模塊功能的寄存器稍作修改就可以.
作者: qiao982    時間: 2025-4-14 13:08
這個作者真的好偉大。
作者: email3687036729    時間: 2025-4-20 14:23
TKS
作者: HWL0541    時間: 2025-4-21 10:57
內容詳細,適合初學者
作者: lry262314    時間: 2025-4-23 15:22
cayboy1988 發表于 2025-4-13 16:09
講的比較仔細,初學者有可能說教程單片機比較老了.我們學習的是思路. 國產的51單片機 增強型51比較多些. 模 ...

有沒有教程集 樓主
作者: clapp    時間: 2025-4-24 16:51
真不錯!資料老了一些,但核心的東西真不過時。
作者: Tonghao666    時間: 2025-5-15 11:28
好東西啊,造福入門的人




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产欧美一区二区三区久久人妖 | 国产视频欧美 | 国产一级片 | 91小视频在线 | 国产小视频自拍 | 亚洲狠狠丁香婷婷综合久久久 | 中文字幕久久精品 | av一区在线观看 | 久久综合久久久 | 久久久国产一区二区三区 | 日本一道本视频 | 欧美婷婷 | 精品视频一区二区 | 亚洲欧美日韩一区二区 | 九九九视频精品 | 一区二区在线观看免费视频 | 免费性视频 | 国产电影精品久久 | 一区在线观看 | 一级毛片黄片 | 亚洲视频一区二区三区 | 成人午夜性成交 | 一区二区小视频 | 中文字幕一区在线观看视频 | 91小视频 | 亚洲精品视频在线 | 精品国产欧美日韩不卡在线观看 | 久久久久国产精品人 | 免费日韩网站 | 亚洲二区在线 | 夜夜爽99久久国产综合精品女不卡 | 国产精品性做久久久久久 | www操操| 高清国产一区二区 | gav成人免费播放视频 | 在线观看国产视频 | 91成人在线 | 日韩一区在线播放 | 国产精品黄色 | 美女黄视频网站 | 精品国产成人 |