找回密碼
         注冊(cè)會(huì)員
        搜索附件  
        MCU資訊論壇 附件中心 單片機(jī)論壇 51單片機(jī)論壇 5_50410_25df9fa9599ec2f.jpg

        5_50410_25df9fa9599ec2f.jpg

         

        “從單片機(jī)初學(xué)者邁向單片機(jī)工程師”之LED主題討論周第三章----:
        本部分內(nèi)容設(shè)定了隱藏,需要回復(fù)后才能看到






















































































































        OK ,到此一個(gè)簡(jiǎn)單的工程模板就建立起來(lái)了,以后我們?cè)傩陆ㄔ次募皖^文件的時(shí)候,就可以直接保存到src文件目錄下面了。
        下面我們開(kāi)始編寫各個(gè)模塊文件。
        首先編寫Timer.c 這個(gè)文件主要內(nèi)容就是定時(shí)器初始化,以及定時(shí)器中斷服務(wù)函數(shù)。其內(nèi)容如下。
        #include <reg52.h>

        bit g_bSystemTime1Ms = 0 ; // 1MS系統(tǒng)時(shí)標(biāo)


        void Timer0Init(void)
        {
        TMOD &= 0xf0 ;
        TMOD |= 0x01 ; //定時(shí)器0工作方式1
        TH0 = 0xfc ; //定時(shí)器初始值
        TL0 = 0x66 ;
        TR0 = 1 ;
        ET0 = 1 ;
        }

        void Time0Isr(void) interrupt 1
        {
        TH0 = 0xfc ; //定時(shí)器重新賦初值
        TL0 = 0x66 ;
        g_bSystemTime1Ms = 1 ; //1MS時(shí)標(biāo)標(biāo)志位置位
        }

        由于在Led.c文件中需要調(diào)用我們的g_bSystemTime1Ms變量。同時(shí)主函數(shù)需要調(diào)用Timer0Init()初始化函數(shù),所以應(yīng)該對(duì)這個(gè)變量和函數(shù)在頭文件里作外部聲明。以方便其它函數(shù)調(diào)用。

        Timer.h 內(nèi)容如下。
        #ifndef _TIMER_H_
        #define _TIMER_H_

        extern void Timer0Init(void) ;
        extern bit g_bSystemTime1Ms ;

        #endif

        完成了定時(shí)器模塊后,我們開(kāi)始編寫LED驅(qū)動(dòng)模塊。
        Led.c 內(nèi)容如下:

        #include <reg52.h>
        #include "MacroAndConst.h"
        #include "Led.h"
        #include "Timer.h"

        static uint16 g_u16LedTimeCount = 0 ; //LED計(jì)數(shù)器
        static uint8 g_u8LedState = 0 ; //LED狀態(tài)標(biāo)志, 0表示亮,1表示熄滅

        #define LED P0 //定義LED接口
        #define LED_ON() LED = 0x00 ; //所有LED亮
        #define LED_OFF() LED = 0xff ; //所有LED熄滅

        void LedProcess(void)
        {
        if(0 == g_u8LedState) //如果LED的狀態(tài)為亮,則點(diǎn)亮LED
        {
        LED_ON() ;
        }
        else //否則熄滅LED
        {
        LED_OFF() ;
        }
        }


        void LedStateChange(void)
        {
        if(g_bSystemTime1Ms) //系統(tǒng)1MS時(shí)標(biāo)到
        {
        g_bSystemTime1Ms = 0 ;
        g_u16LedTimeCount++ ; //LED計(jì)數(shù)器加一
        if(g_u16LedTimeCount >= 500) //計(jì)數(shù)達(dá)到500,即500MS到了,改變LED的狀態(tài)。
        {
        g_u16LedTimeCount = 0 ;
        g_u8LedState = ! g_u8LedState ;
        }
        }
        }


        這個(gè)模塊對(duì)外的借口只有兩個(gè)函數(shù),因此在相應(yīng)的Led.h 中需要作相應(yīng)的聲明。
        Led.h 內(nèi)容:
        #ifndef _LED_H_
        #define _LED_H_

        extern void LedProcess(void) ;
        extern void LedStateChange(void) ;

        #endif

        這兩個(gè)模塊完成后,我們將其C文件添加到工程中。然后開(kāi)始編寫主函數(shù)里的代碼。
        如下所示:

        #include <reg52.h>
        #include "MacroAndConst.h"
        #include "Timer.h"
        #include "Led.h"

        sbit LED_SEG = P1^4; //數(shù)碼管段選
        sbit LED_DIG = P1^5; //數(shù)碼管位選
        sbit LED_CS11 = P1^6; //led控制位

        void main(void)
        {
        LED_CS11 = 1 ; //74HC595輸出允許
        LED_SEG = 0 ; //數(shù)碼管段選和位選禁止(因?yàn)樗鼈兒蚅ED共用P0口)
        LED_DIG = 0 ;
        Timer0Init() ;
        EA = 1 ;
        while(1)
        {
        LedProcess() ;
        LedStateChange() ;
        }
        }

        整個(gè)工程截圖如下:




        至此,第三章到此結(jié)束。
        一起來(lái)總結(jié)一下我們需要注意的地方吧

        [color=#FF0000]1. C語(yǔ)言源文件(*.c)的作用是什么
        2. C語(yǔ)言頭文件(*.h)的作用是什么
        3. typedef 的作用
        4. 工程模板如何組織
        5. 如何創(chuàng)建一個(gè)多模塊(多文件)的工程



        [ 此貼被紅金龍吸味在2009-12-28 21:04重新編輯 ]


        5_50410_25df9fa9599ec2f.jpg

        QQ|手機(jī)版|MCU資訊論壇 ( 京ICP備18035221號(hào)-2 )|網(wǎng)站地圖

        GMT+8, 2025-6-30 15:00 , Processed in 0.038768 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2025 Discuz! Team.

        返回頂部
        456亚洲人成影视在线观看| 精品久久久久久亚洲精品| 精品久久久久久无码专区不卡| 99精品国产一区二区三区2021 | 精品人妻码一区二区三区| 国产精品美女久久久久网| 久久精品国产精品亚洲人人 | 999国内精品永久免费视频| 国产高清精品在线| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 久久精品夜色噜噜亚洲A∨| 亚洲精品卡2卡3卡4卡5卡区| 精品999久久久久久中文字幕| 久久久亚洲精品蜜桃臀| 欧美成人精品高清在线观看| 国产精品白丝AV嫩草影院| 亚洲精品字幕在线观看| 91精品国产高清久久久久久91 | 日本精品中文字幕| 合区精品久久久中文字幕一区| 国产精品揄拍100视频| 黑人巨茎精品欧美一区二区| 久久香蕉超碰97国产精品| 国产精品亚洲欧美大片在线观看| 日韩精品一区二区三区中文 | 日韩精品无码熟人妻视频| 国产成人精品福利网站在线观看| 国内精品久久久久影院薰衣草| 亚洲综合精品香蕉久久网97| 免费看美女隐私部位| 87国产私拍福利精品视频| 91视频-88av| 国产精品白丝AV嫩草影院| 亚洲高清国产AV拍精品青青草原 | 男女猛烈无遮挡免费视频| wwwvr高清亚洲精品二区| 亚洲AV第一页国产精品| 精品久久久久中文字幕一区| 91精品国产福利尤物| 中文精品99久久国产| 91精品国产91久久久久久青草|