tft每日頭條

 > 生活

 > p1和p2相同嗎

p1和p2相同嗎

生活 更新时间:2024-09-17 07:31:48

初學時往往對P0口、P2口和P3口的第二功能用法迷惑不解,認為第二功能和原功能之間 要有個切換的過程,或者說要有一條指令,事實是各端口的第二功能完全是自動的,不需要指令來轉換。

如P3.6、P3.7分别是WR、RD信号,當微片理機外接RAM或有外部I/O口 時,它們換作第二功能,不能作為通用I/O口使用,隻要一微處理機一執行到MOVX指令,就會有相應的信号從 P3. 或P3.7送出,不需要事先用指令說明。事實上‘不能作為通用I/O口使用’也并不是‘不能’而是(使用者)‘不會’将其作為通用I/O口使用。你完全可以在指令中按排一條S ETB P3.7的指令,并且當單片機執行到這條指令時,也會使P3.7變為高電平,但使用者不會這麼做,因為這通常這會導緻系統死機。   

p1和p2相同嗎(初學時往往對P0口)1

文章相對比較長,字數比較多,大家可以先打開頭像關注我,之後慢慢看,///插播一條:我自己在今年年初錄制了一套還比較系統的入門單片機教程,想要的同學找我拿就行了,私信我就可以哦~點我頭像左下角黑色字體加我也能領取哦///

堆棧是一個區域,是用來存放數據的,這個區域本身沒有任何特殊之處,就是内部RAM的一部份,特殊的是它存放和取用數據的方式,即所謂的‘先進後出,後進先出’,并且 堆棧有特定的數據傳輸指令,即PUSH和POP,有一個特殊的專為其服務的單元,即堆棧指針SP。 每當執一次 PUSH指令時,SP就(在原來值的基礎上)自動加1,每當執行一次POP指令,SP就(在原來值基礎上)自動減1。

由于SP中的值可以用指令加以改變,所以隻要在程序開始階段更改了SP值,就可以把堆棧設置在規定的内存單元中,如在程序開始時用一條MOV SP,#5FH指令,就時把堆棧設置在從内存單元60H開始的單元中。一般程序的開頭總有這麼條設置堆棧指針的指令,因為開機時,SP的初始值為07H,這樣就使堆棧從08H單元 始往後。08H到1FH這個區域正是8031的第二、三、四工作寄存器區,經常要被使用,這會造成混亂。不同作者編寫程序時,初始化堆棧指令也不完全相同,這是作者的習慣問題。當設置好堆棧區,并不意味着該區域成為一種專用内存,它還是可以象普通内存區域一樣使用,隻是一般情下編程者不會把它當成普通内存用了。

p1和p2相同嗎(初學時往往對P0口)2

對嵌入式系統工程師及嵌入式硬件工程師而言,2020年将是振奮人心的一年。随着物聯網應用的普及,MCU市場将再次繁榮。

因此,市場上對嵌入式系統工程師人才的需求也将出現新高。這些都是底層編程領域中即将出現的趨勢。

先搞清楚什麼是嵌入式

我們已經習慣了使用強大的計算能力來處理機器學習,那麼嵌入式是這樣的嗎?

一般的機器學習工程師很少考慮計算資源。而且他們也很少關心内存的使用情況。為什麼?因為這些硬件都很便宜,甚至是你的手機都擁有相當不錯的CPU和大量内存。

p1和p2相同嗎(初學時往往對P0口)3

你已經很久沒有過聚會拍照時發現自己手機上的存儲不夠的情況了吧?想象一下,你使用的是隻有256KB閃存的TrueTouch感應控制器。

沒錯,隻有256KB。而且由于固件占用了一部分, 因此你不能完全使用這點存儲。算下來,你能使用的也就是大約100KB。回頭再看看你的上一個模型的大小。可能比這個大多了。

對單片機感興趣的朋友可以找我,我錄制了一些關于單片機的入門教程,有需要的童鞋找我拿就行,私信我“林老師”就可以拿~點擊打開我的頭像就能領取

編程就是編寫程序

還記得前幾章我們動手造了的那個二以内加法計算器嗎?計算器也是計算機的一種。我們可以把計算器理解為一個擁有多個輸入和多個輸出的盒子

p1和p2相同嗎(初學時往往對P0口)4

因此,其實對于一台計算機而言,鼠标鍵盤甚至屏幕都不是必需品,我們完全可以把輸入端通上電,然後每一個輸入端都加上一個開關,而對開關的操作就是修改處理器的輸入,而輸出端完全可以使用小燈來進行顯示。(當然上圖忽略了一個重要的信号,時鐘信号。為了保證每一條指令有序的執行,我們需要一個額外的開關,當且僅當開關開啟或閉合的瞬間,CPU才會執行一條指令)

在上世紀五十年代,計算機是如此的簡陋,那時候的人們采用手工方式來輸入,主要的人機交互方式是紙帶

比如如果的輸入是00010000,那麼對應的紙帶的一列就應該是○○○●○○○○

然後把制作好的紙帶放入計算機,計算機就會把這一條指令轉化成電信号輸入進CPU,CPU運算之後會在輸出端顯示結果(當然有的指令是不會顯示結果的)

可以說那時候的計算機科學家真的是在“編織”程序了

在這個過程中,計算機科學家們把想要讓計算機完成的工作轉變成一條條指令,然後通過“穿孔紙帶”這一人機交互方式,計算機就能正确的執行任務了。因此簡化的“編程”模型如下

p1和p2相同嗎(初學時往往對P0口)5

上圖把一個程序執行的過程展示了出來,這張圖片中有兩個箭頭,它标志着兩個步驟。計算機科學家們把想要完成的任務轉化成計算機能夠執行的代碼,然後計算機根據這些代碼執行任務。計算機内部所做的事我們會在後面幾張詳談。但是現在亟待解決的問題是前面的步驟,如何把具體的任務轉換成計算機所能理解的指令

幸運的是,今天我們不必像最早的計算機科學家們一樣手工的進行每一步操作。人們發明了一種新的工具—高級語言。我們直接把想要做的任務用簡單易懂的高級語言描述出來,然後一種額外的程序“編譯器”就會自動的把它們轉化為計算機能理解的一條一條指令,而在高級語言中,最經典最出名的高級語言就是C語言了

請注意,雖然在這裡先介紹了C語言。但是從C語言到程序完成的過程,還是有很多步驟的。但是優先介紹C語言仍然是一種最佳的幫助大家理解計算機運行過程的方式。至于如何從C語言到達真正的完整的程序,是我們整個系列希望給大家展示的内容好了。

這期分享就到這裡啦,覺得對屏幕前的你有幫助的麻煩一鍵三連,點贊收藏加關注哦,有問題的朋友也可以在評論區評論,或者私信我

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved