新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 80C51系列單片機的升級版本C8051F

        80C51系列單片機的升級版本C8051F

        作者: 時間:2011-05-07 來源:網絡 收藏

        3 應用舉例

        該例中要用的引出腳有一個串行異步通信UART和一個外中斷INT0。按照系統默認的優先順序,P0口被內部資源引出而占用,其中P0.0為UART通信的RX端, P0.1為UART通信的TX端,P0.3為外中斷INT0輸入引腳,其它端口為通用I/O口。P1口為具有上拉電阻的輸入口,P2口為通用推挽的輸出口,P3口也是通用推挽輸出口。具體如下:

        $include(c8051f120.inc)

        ORG 00H

        JMP RESET ;程序入口

        ORG 03H

        JMP EX_INT ;外中斷INT0入口

        ORG 0BH

        JMP TIME_0 ;定時器0中斷入口

        ORG 100H

        RESET?MOV, WDTCN,#0DEH ?禁止看門狗

        MOV WDTCN,#0ADH

        MOV SFRPAGE, #0FH ;取特殊功能寄存器的15頁

        MOV OSCXCN,#01100111B ;外用時鐘源選擇晶體,頻率范圍在30MHz以下

        ORL PLL0CN,#00000111B ;用外部晶振作為PLL的源

        MOV PLL0DIV,#00000001B ;PLL的輸入除系數1(復位后默認)

        MOV PLL0MUL,#00000010B ;PLL的倍頻系數為2(25MHz晶振)

        MOV PLL0FLT,#00010001B ;PLL的濾波參數(復位后默認為00110001B)

        MOV R4,#0 ;延遲一會兒,使晶振穩定

        NNOP1:MOV R5,#0

        DJNZ R5,$80C51系列單片機的升級版本C8051F

        DJNZ R4,NNOP1

        MOV CLKSEL,#00000010B ;系統時鐘源用晶振再經鎖相環PLL二倍頻,產生50MHz的時鐘

        ANL OSCICN,#01111111B ?;允許外部振蕩,禁止內部振蕩

        MOV XBR2;#01000000B ;使能交叉譯碼開關(這條指令很重要)

        MOV P2MDOUT,#11111111B ;P2口置成輸出方式

        MOV P3MDOUT,#11111111B ;P0口置成輸出方式(復位默認為0__開漏)

        MOV XBR1,#0000100B ;允許外中斷0連到端口

        MOV SFRPAGE, #0H ;取特殊功能寄存器的0頁(因為有關定時器、中斷的SFR在0頁)

        SETB EX0 ;允許外中斷0

        SETB IT0 ;INT0下降沿中斷

        MOV TMOD,#21h ;設置定時器0為方式1, 定時器1為方式2

        MOV CKCON,#08h ;選定時器0時鐘為系統時鐘,定時器1時鐘為系統時鐘除以12

        MOV TH1,#242 ;(50/12)MHz的時鐘產生9600波特率的計數初值為242

        SETB TR0 ;接通定時0

        SETB TR1 ;接通定時1

        CLR ET1 ;禁止定時器1中斷

        MOV SCON,#50H ;串口工作于方式1,允許接收,單機工作

        SETB ET0 ;允許T0中斷

        SETB PT0 ;T0的中斷優先級高

        SETB EA ;開中斷



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 揭东县| 汾阳市| 三原县| 双城市| 清流县| 长白| 阳西县| 江都市| 安龙县| 吴江市| 马山县| 叙永县| 东乡族自治县| 游戏| 台中市| 屯门区| 怀柔区| 肃宁县| 和平区| 通化县| 临夏市| 巴青县| 巴南区| 宜兴市| 屏东县| 峨眉山市| 修文县| 辽宁省| 宁河县| 西平县| 博客| 滕州市| 大厂| 龙井市| 麻栗坡县| 响水县| 惠东县| 独山县| 叶城县| 鄄城县| 文昌市|