国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在XC8中使用PIC IO引腳

454398 ? 來源:工程師吳畏 ? 2019-07-26 09:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

原理圖

如何在XC8中使用PIC IO引腳

配置位

大多數PIC程序在main.c文件的最頂部都有一個配置代碼塊。大部分內容在相關之前不會被覆蓋,但重要的是在main.c文件中放入相同的代碼(如下所示)。

原因是PIC具有硬件(例如看門狗定時器)可以重置設備,這可能會導致意外的結果。因此,此處的配置代碼完全禁用所有這些額外功能,以確保它們不會妨礙您!

但是如果您很好奇,可以通過單擊生產》設置配置位來生成自己的配置代碼。

這將打開以下窗口,可用于更改位。完成所有更改后,單擊“生成源代碼以輸出”。然后,這將在輸出窗口中生成可以復制到主文件的代碼!

配置振蕩器

當我們用C編寫程序時,有些事情我們不必考慮,例如計算機將如何與鍵盤對話或CPU正在使用什么振蕩器。但是,微控制器與日常計算機不同,它們需要一定程度的配置才能正常運行。那么我們需要配置什么才能使PIC運行?通常,在運行主循環之前需要執行兩個主要的配置代碼:振蕩器配置和I/O配置。

PIC器件由許多不同的模塊組成,包括定時器,存儲器和I/O外設,但最重要的是CPU。 CPU或中央處理單元是實際以指令形式執行操作的電路。當我們為運行的芯片創建C程序時,編譯器將C程序轉換為PIC的CPU可以理解的指令。與現有的其他CPU一樣,PIC中的CPU以離散的步驟工作,而不是瞬間完成。要使CPU執行這些步驟(運行程序),需要一個時鐘源。該時鐘源可以來自外部振蕩器,晶振,甚至是PIC內部的內部振蕩器。為了簡化電路,這里的大多數項目都會將PIC配置為使用內部振蕩器。

在PIC芯片上配置振蕩器要求我們調用一些特定指令并配置特定配置位。根據您使用的PIC,這將有所不同,因此本文中的代碼僅考慮PIC16F819。我們的主文件(在上一篇文章中創建)中的第一個任務是確保我們的振蕩器配置位設置為使用內部振蕩器。

PIC16F819內部振蕩器配置

設置該位不能配置振蕩器運行的速度;它只告訴PIC它將運行內部振蕩器。

下一步是設置振蕩器的速度。由于PIC會逐步執行指令,并且這些步驟發生在來自振蕩器的脈沖上,因此更快的振蕩器將導致更快的PIC,這意味著它將能夠每秒執行更多指令。但有多少? PIC16和PIC18器件通常需要四個時鐘周期來執行指令,因此經驗法則是將振蕩器速度除以4,這就是PIC每秒指令的速度。

例如一個工作在8MHz的PIC每秒可以執行大約200萬條指令,而工作在64MHz的PIC每秒可以執行1600萬條指令。

那么,我們如何配置速度?這取決于每個PIC,但通常有一個名為OSCCON的寄存器可用于調整速度。找出所涉及寄存器的最佳方法是查看振蕩器配置章節下的器件數據表。以下是PIC16F819數據手冊中的摘錄,描述了第38頁上的不同速度(PDF)。

我們將配置我們的設備以8MHz運行,要做到這一點,我們需要將IRCF設置為111.在XC8中,可以使用它們的名稱直接訪問寄存器,可以使用位和點指令訪問特定位,并且可以訪問一組位(例如IRCF)作為單個值,如下所示。

OSCCON = 0b01110000(為整個OSCCON寄存器賦值)

OSCCONbits.IRCF = 0b111(將三個IRCF位分配給111)

OSCCONbits.IRCF0 = 1(為IRCF0指定二進制值1)

在我們的代碼中,我們將使用以下指令將振蕩器設置為8MHz:

配置和使用I/O端口

為了使我們的PIC能夠與外部電路進行交互,它需要能夠讀取和寫入其I/O引腳的數據。在處理PIC16F819上的I/O端口時,我們需要關注三個寄存器:

TRISA和TRISB寄存器(端口A和端口B上引腳的方向)

PORTA和PORTB寄存器(輸入和輸出寄存器)

ADCON1寄存器(引腳是數字引腳還是模擬輸入引腳)

在我們的大多數項目中,我們將處理數字輸出(如LED,顯示器等),因此務必確保I/O引腳未配置為模擬輸入。為確保這一點,我們將查看ADCON1寄存器(見第82頁(PDF))并設置相應的PCFG位,以便與ADC相關的所有引腳都是數字引腳。

在我們的電路中,我們有一個LED輸出連接到RB2(引腳8),因此我們需要將其配置為輸出。為此,我們使用TRIS(TRISTATE)寄存器,該寄存器用于確定哪些引腳是輸入,哪些是輸出。

PIC上的每個端口最多可以為8位寬(RB0-RB7用于示例)并且TRIS寄存器中的每個位對應于輸出引腳。如果某位為1(打開),則后續引腳為輸入,如果某位為0(關閉),則該位為輸出。

例如,如果TRISB等于0,則全部為8 PORT B上的引腳將是輸出。如果TRISB = 255(二進制為11111111),則PORT B上的所有引腳都是輸入。如果TRISB的值為0xF0(二進制為11110000),則PORT B(RB0-RB3)中的前四個引腳為輸出,后四個引腳(RB4-RB7)為輸入。請記住,二進制數首先從最右邊讀取!

有了這些知識,我們需要將RB2配置為輸出。這可以使用TRISB寄存器名稱并訪問TRISB2位來完成,如下所示。

但我們如何讀寫I/O銷?這在其他PIC上可能略有不同,但在PIC16F819上我們使用PORT寄存器,我們再次使用位和點訪問各個引腳!

端口引腳不限于一次讀取一個。您可以改為對整個PORT寄存器進行讀寫操作。這意味著您可以將PORT用作8位輸入/輸出端口,這在與字母數字LCD顯示器等設備交互時非常有用。

您可能想要記住的一個簡潔功能是您可以隨時配置I/O引腳!一分鐘你的引腳可能是一個輸入引腳,下一個它可能是一個輸出!重要的是你設置了TRIS位的正確值。

示例程序

本示例程序配置PIC16F819讀取連接到其引腳RA0(引腳17)的觸覺開關,然后打開/關閉RB2上的LED(引腳) 8),取決于開關的狀態。

雖然這個例子看起來很基本,但你現在應該可以編寫一個PIC設備來運行你的C程序和讀/寫端口。這已經允許您與市場上的大多數硬件接口,并且您可以開始與您自己的電路和項目進行交互!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PIC
    PIC
    +關注

    關注

    8

    文章

    511

    瀏覽量

    90967
  • XC8
    XC8
    +關注

    關注

    0

    文章

    8

    瀏覽量

    14226
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    數據采集IO卡設計原理圖:136-KC705E增強版基于FMC接口的 Kintex-7 XC7K325T PCIeX8 接口卡

    FMC子卡模塊, Kintex-7 XC7K325T板卡, 高速信號處理, 軟件無線電處理平臺, 數據采集IO
    的頭像 發表于 02-14 10:27 ?83次閱讀
    數據采集<b class='flag-5'>IO</b>卡設計原理圖:136-KC705E增強版基于FMC接口的 Kintex-7 <b class='flag-5'>XC</b>7K325T PCIeX<b class='flag-5'>8</b> 接口卡

    深入解析英飛凌XC835/836 8位單片機:特性、參數與應用考量

    深入解析英飛凌XC835/836 8位單片機:特性、參數與應用考量 在當今的電子設計領域,單片機作為核心控制元件,廣泛應用于各種電子設備。英飛凌的XC835/836
    的頭像 發表于 02-10 11:05 ?430次閱讀

    PIC16F72:8位CMOS FLASH微控制器的深度剖析

    PIC16F72:8位CMOS FLASH微控制器的深度剖析 在電子工程師的日常設計,選擇一款合適的微控制器至關重要。PIC16F72作為Microchip公司推出的28
    的頭像 發表于 02-10 11:00 ?211次閱讀

    深入解析Microchip PIC16C62X系列:8位CMOS微控制器的卓越之選

    深入解析Microchip PIC16C62X系列:8位CMOS微控制器的卓越之選 在如今的電子設計領域,選擇一款合適的微控制器對于項目的成功至關重要。Microchip公司的PIC16C62X系列
    的頭像 發表于 02-09 17:50 ?1197次閱讀

    探索Microchip PIC16C5X系列8位微控制器的魅力

    探索Microchip PIC16C5X系列8位微控制器的魅力 在電子工程領域,選擇一款合適的微控制器對于項目的成功至關重要。Microchip的PIC16C5X系列8位微控制器以其高
    的頭像 發表于 02-09 16:20 ?278次閱讀

    何在AMD Vitis Unified IDE中使用系統設備樹

    您將在這篇博客中了解系統設備樹 (SDT) 以及如何在 AMD Vitis Unified IDE 中使用 SDT 維護來自 XSA 的硬件元數據。本文還講述了如何對 SDT 進行操作,以便在 Vitis Unified IDE
    的頭像 發表于 11-18 11:13 ?3122次閱讀
    如<b class='flag-5'>何在</b>AMD Vitis Unified IDE<b class='flag-5'>中使</b>用系統設備樹

    IO8種工作模式和應用

    在芯片設計IO口(輸入/輸出端口)是微控制器(MCU)或處理器與外部設備交互的關鍵接口。IO口的工作模式通常由芯片的硬件設計和軟件配置決定,不同的工作模式適用于不同的應用場景。 工作模式典型
    發表于 11-14 06:46

    將JTAG引腳用作普通IO

    將JTAG引腳用作普通IO時,需要通過復用功能重映射來釋放調試接口占用的引腳資源。 void JTAG_To_GPIO_Config(void) { // 關閉JTAG功能(保留SWD調試接口
    發表于 11-13 06:39

    何在VS code配置Zephyr集成開發環境

    上一篇文章介紹了如何在VS code中使用瑞薩官方插件為RA芯片創建項目與項目調試,相信大家對RA在VS code的開發有了基礎的了解。
    的頭像 發表于 11-05 14:46 ?1516次閱讀
    如<b class='flag-5'>何在</b>VS code<b class='flag-5'>中</b>配置Zephyr集成開發環境

    何在vivadoHLS中使用.TLite模型

    本帖欲分享如何在vivadoHLS中使用.TLite模型。在Vivado HLS中導入模型后,需要設置其輸入和輸出接口以與您的設計進行適配。 1. 在Vivado HLS項目中導入模型文件 可以
    發表于 10-22 06:29

    PIC16F18056/76:功能豐富的8位微控制器及其在傳感器與實時控制的應用

    Microchip Technology PIC16F18056和PIC16F18076 8位微控制器具有一整套數字和模擬外設,支持成本敏感型傳感器和實時控制應用。這些MCU采用28引腳
    的頭像 發表于 10-14 09:33 ?692次閱讀
    <b class='flag-5'>PIC</b>16F18056/76:功能豐富的<b class='flag-5'>8</b>位微控制器及其在傳感器與實時控制<b class='flag-5'>中</b>的應用

    請問如何在 Keil μVision 或 IAR EWARM 中使用觀察點進行調試?

    何在 Keil μVision 或 IAR EWARM 中使用觀察點進行調試?
    發表于 08-20 06:29

    按鈕式智能負載開關XC6193/XC6194系列概述

    支持按鈕操作的智能負載開關 IC“XC6193/XC6194 系列”!
    的頭像 發表于 06-06 11:29 ?1209次閱讀

    何在SPI8中使用SSEL1而不是SSEL0?

    我正在使用LPC55S69開發板,并嘗試使用其 SPI 接口來控制設備。 我使用 FLEXCOMM 8 進行此應用。它與 ssel0 配合得很好,在通信過程它被正確地拉下。 然后我嘗試切換
    發表于 04-02 08:02

    在imx93,如何在flexio引腳模擬spi功能?

    何在 flexio 引腳模擬 spi 功能?我看到了實現 I2C 的文檔,但沒有看到 SPI 的文檔。也搜索了內核。誰能提供任何文檔或示例來開始仿真 SPI?
    發表于 03-21 06:59