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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8538|回復: 26
打印 上一主題 下一主題
收起左側

從單片機基礎到程序框架(全集PDF)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:540927 發表于 2020-9-8 13:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
吳堅鴻先生在21ic論壇上連載的帖子最終整理成的書,前期內容是C語言基礎,后面是51單片機的基礎,文章很有思想深度,不同于市場上所賣的單片機書籍,它從項目開發的角度來寫,有很多內容是一般書籍上沒有的,值得推廣學習。吳堅鴻先生免費把書籍分享給社會,在此感謝他的付出。

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

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏17 分享淘帖 頂4 踩
回復

使用道具 舉報

沙發
ID:108573 發表于 2020-9-9 10:15 | 只看該作者
這個作者真的好偉大。要是有目錄就完美了
回復

使用道具 舉報

板凳
ID:59830 發表于 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;
                }
        }
}
回復

使用道具 舉報

地板
ID:448556 發表于 2020-9-9 11:00 | 只看該作者
有目錄版的 在他群文件里
回復

使用道具 舉報

5#
ID:540927 發表于 2020-9-11 16:23 | 只看該作者
yygdzjs 發表于 2020-9-9 10:49
講的比較仔細,初學者有可能說教程單片機比較老了.我們學習的是思路.
國產的51單片機 增強型51比較多些.  ...

謝謝您的回復呢,真的覺得這本書很不錯,一般的單片機書籍講解的沒有這么仔細,而且單片機部分也只涉及最基本的,這本書中單片機部分把項目中能用到的知識也做了深入講解,真希望有更多的人能夠看到
回復

使用道具 舉報

6#
ID:797195 發表于 2020-9-13 10:12 | 只看該作者
很好的學習資料,感謝作者
回復

使用道具 舉報

7#
ID:292876 發表于 2020-9-13 14:40 來自手機 | 只看該作者
中間水準的設計開發人員,看吳師傅的教程,也會有很多的啟發,這本書不會教你太多如何寫代碼,而是教你單片機思路。是不可多得神作。我看了好多遍,每一次都有所啟發,特別是在不注意的邊邊角角,總有些許收獲。神作
回復

使用道具 舉報

8#
ID:164385 發表于 2020-9-15 19:53 | 只看該作者
偉大的作者!
回復

使用道具 舉報

9#
ID:253767 發表于 2020-9-16 07:56 | 只看該作者
吳堅鴻先生奉獻社會!!!
回復

使用道具 舉報

10#
ID:540927 發表于 2020-9-29 13:19 | 只看該作者
希望不要沉啊,讓更多需要的人看到
回復

使用道具 舉報

11#
ID:83634 發表于 2020-9-29 21:36 | 只看該作者
不可多得神作
回復

使用道具 舉報

12#
ID:540927 發表于 2020-10-27 11:18 | 只看該作者
這么好的東西竟然沉了,大家需要的趕緊下啊
回復

使用道具 舉報

13#
ID:246635 發表于 2020-10-27 21:42 | 只看該作者
還能下載吧?謝謝分享
回復

使用道具 舉報

14#
ID:517691 發表于 2022-6-22 22:23 | 只看該作者
很好的資料
回復

使用道具 舉報

15#
ID:299910 發表于 2022-9-3 16:51 | 只看該作者
看了第一頁 捐權聲明 我就感受到了作者胸懷的寬廣。瀏覽了一下內容,圖片標注的很認真詳細,應該對我們很有幫助。感謝作者,感謝樓主分享!
回復

使用道具 舉報

16#
ID:690831 發表于 2022-9-4 00:52 | 只看該作者
這本書看過好幾次,每次都有新的啟發
回復

使用道具 舉報

17#
ID:765334 發表于 2022-9-5 17:40 來自手機 | 只看該作者
佩服,佩服,下載來學習
回復

使用道具 舉報

18#
ID:949074 發表于 2022-9-5 23:04 | 只看該作者
正在無頭緒的學習單片機,謝謝分享
回復

使用道具 舉報

19#
ID:970790 發表于 2022-9-6 00:08 | 只看該作者
佩服,佩服,下載來學習
回復

使用道具 舉報

20#
ID:248392 發表于 2022-9-6 08:55 | 只看該作者
感謝吳老師!
回復

使用道具 舉報

21#
ID:15745 發表于 2022-11-30 16:28 | 只看該作者
還沒入門,學習看看
回復

使用道具 舉報

22#
ID:748788 發表于 2022-12-1 12:50 | 只看該作者
傳一個帶目錄的,方便查看 手把手教你單片機程序框架—吳堅鴻(共1209頁pdf下載).pdf (3.96 MB, 下載次數: 57)


回復

使用道具 舉報

23#
ID:15745 發表于 2023-4-20 16:28 | 只看該作者
正好在學習51單片機,學習學習
回復

使用道具 舉報

24#
ID:1064915 發表于 2023-4-21 17:35 | 只看該作者
已下載,拜讀中
回復

使用道具 舉報

25#
ID:1108782 發表于 2024-1-16 09:26 | 只看該作者
wwh2382 發表于 2022-12-1 12:50
傳一個帶目錄的,方便查看

U are hero!
回復

使用道具 舉報

26#
ID:149799 發表于 2024-4-6 11:01 | 只看該作者
多謝樓主,仔細看看資料確實有幫助的。
回復

使用道具 舉報

27#
ID:934176 發表于 2025-4-13 16:09 | 只看該作者
講的比較仔細,初學者有可能說教程單片機比較老了.我們學習的是思路. 國產的51單片機 增強型51比較多些. 模塊功能的寄存器稍作修改就可以.
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品高清久久 | 国产日韩欧美一区 | h视频在线看 | av免费在线观看网站 | 黄色av网站在线免费观看 | 欧美日韩在线精品 | 亚洲欧美激情四射 | 国产精品一区二区三区四区五区 | 久久综合久 | 日韩在线免费视频 | 亚欧精品 | 日韩精品一区二区三区中文在线 | 免费观看黄 | 亚av在线| 日韩中文字幕在线观看 | 午夜综合 | 99成人精品 | 伊人激情网 | 犬夜叉在线观看 | 欧美精品一区在线发布 | 亚洲黄色网址视频 | 91一区二区在线观看 | 精品一二三区视频 | 国产精品久久777777 | 亚洲欧美综合精品久久成人 | 国产在线成人 | 精精精精xxxx免费视频 | 精品永久 | 国产中文在线观看 | 成人1区2区 | 久久久www成人免费精品 | 国产a区| 成人亚洲 | 日韩国产中文字幕 | 成人久久久 | 久久精品色欧美aⅴ一区二区 | 国产精品特级片 | 麻豆av网站| 真人一级毛片 | 亚洲精品一区二区 | 国产在线一级片 |