99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

ReCclay
認證:VIP會員
所在專題目錄 查看專題
【藍橋杯單片機組模塊】1、硬件電路基礎知識 與 蜂鳴器模塊上手
【藍橋杯單片機組】兩種外設訪問方式:IO編程和MM編程
【藍橋杯單片機組模塊】2、以 LED 流水燈為例,熟悉 CT107D 外設驅動套路
【藍橋杯單片機組模塊】3、上手 CT107D 外設驅動之數碼管模塊
【藍橋杯單片機組模塊】4、按鍵模塊
【藍橋杯單片機組模塊】5、EEPROM模塊
作者動態(tài) 更多
【FPGA基礎】基于 Pango Design Suite(PDS) 的FPGA開發(fā)流程
2021-05-14 11:22
【FPGA基礎】基于Quartus Prime 17.1 的FPGA開發(fā)流程
2021-05-08 17:49
【AD快速入門】8051最小系統(tǒng)繪制
2021-04-22 10:03
藍橋嵌入式之 ADC電壓采集與顯示
2021-04-14 11:48
藍橋嵌入式之 實時時鐘RTC
2021-04-13 14:50

【藍橋杯單片機組】兩種外設訪問方式:IO編程和MM編程

?導讀:《藍橋杯單片機組》專欄文章是博主2018年參加藍橋杯的單片機組比賽所做的學習筆記,在當年的比賽中,博主是獲得了省賽一等獎,國賽二等獎的成績。成績雖談不上最好,但至少問心無愧。如今2021年回頭再看該系列文章,仍然感觸頗多。為了能更好地幫助到單片機初學者,今年特地抽出時間對當年的文章邏輯和結構進行重構,以達到初學者快速上手的目的。需要指出的是,由于本人水平有限,如有錯誤還請讀者指出,非常感謝。那么,接下來讓我們一起開始愉快的學習吧。

在前面一節(jié)《【藍橋杯單片機組模塊】1、硬件電路基礎知識 與 蜂鳴器模塊上手》中,我們提到了IO編程,其實與IO編程相對應的還有一種編程方式叫MM編程,今天我們就來深入了解下這兩種編程方式吧...

前排提醒:MM編程僅作為拓展視野,比賽還是最好使用IO編程!

一、兩種編程方式簡介

兩種編程方式通過板上跳線 J13 進行切換,比賽建議最好還是用 IO 編程

1.1、IO 編程方式

IO編程方式,即我們之前一直在用的這種IO操作方式...

舉例來說,點亮所有LED的示例代碼如下:

P2 = ((P2&0x1F)|0x80);
P0 = 0x00; //點亮所有LED
P2 = P2 & 0x1F;

1.2、MM 編程方式

MM 編程方式通過 XBYTE 關鍵字來操作部分外設資源,這種方式能夠大大簡化外設程序設計。

CT107D 單片機綜合訓練平臺的 MM 編程方式,是一 種可以像操作外部 RAM 存儲器一樣,操作 LED 指示燈、執(zhí)行結構(蜂鳴器、繼電器 )、數碼管等外設資源的編程方式。當然要實現(xiàn)這樣的編程方式,是與 CT107D 單片機綜合訓練平臺的硬件設計具有關聯(lián)性的。

注:51 單片機可以外擴 64K 字節(jié)的 RAM 和 ROM 空間,傳統(tǒng)的 8051 單片機具有 16 位地址總線和 8 位數據總線,其中 P0 口作為數據和地址低字節(jié)的復用端口,P2 口作為高 8 位地址線。

對比學習,IO 編程方式控制LED代碼片段如下:

P2 = ((P2&0x1F)|0x80);
P0 = 0x00; //點亮所有LED
P2 = P2 & 0x1F;

MM 編程方式控制LED代碼片段(僅1行代碼)如下:

XBYTE[0x8000] = 0x00; // XBYTE[0x8000] = 0xff;

Q1:為什么LED外設對應的地址是 0x8000 呢,其他外設該如何確定呢?

答:由 CT107D單片機綜合訓練平臺的硬件電路圖我們可以知道。

P2.7 = 1; P2.6 = 0; P2.5 = 0;(Y4)(其它地址線不需要關心),即可將與 LED 指示燈模塊連接的74HC573“打通”,此時可以通過 P0口控制 LED 指示燈的狀態(tài),因此LED 指示燈模塊的地址為 0x8000。

以此類推,我們可以知道執(zhí)行機構模塊(蜂鳴器、繼電器)的操作地址為 0xA000 (Y5);數碼管段碼端的操作地址為 0xE000 (Y7);數碼管位選端口的操作地址為 0xC000 (Y6)

寫到這,對應的規(guī)律也自然不言而喻了,各個外設對應的操作地址如下圖所示。

Q2:MM編程中的 XBYTE 可以繼續(xù)深入講解一下么?

還是順藤摸瓜的思路,我們不難發(fā)現(xiàn):XBYTE 關鍵字定義在 absacc.h 文件中,而absacc.h中的XBYTE又定義在xdata0地址處,如下圖所示。

注:xdata關鍵字你是不是又有疑惑了,這是個什么玩意呢?別急,后面也會一一介紹到的!(O(∩_∩)O哈哈~)

這里寫圖片描述

二、兩種編程方式控制LED實驗

2.1、IO 編程方式控制 LED

#include "reg52.h"
#include "intrins.h"

//軟件自動生成的1s延時函數
void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 43;
	j = 6;
	k = 203;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

// 主函數
void main(void)
{
	while(1)
	{
		/*  注釋 1 :通過此句代碼將 P2.7 = 1 , P2.6 = 0 , P2.5 = 0 ,不改變 P2 口其它引腳
		狀態(tài)。由 138 譯碼器的真值表可以知道此時譯碼器輸出端 Y4 處于低電平狀態(tài);因為
		為 IO 編程方式,所以 Y4 和 GND 一起經過或非門后,輸出高電平,并連接到 573
		鎖存器的使能端口,將 573 鎖存器 “ 打通 “ ,此時鎖存器輸出端與單片機 P0 口狀態(tài)一
		致。 */
		P2 = ((P2&0x1f)|0x80);
		/*  注釋 2 :因為 573 鎖存器已經 “ 打通 “ ,現(xiàn)在通過 P0 口輸出 0xff , 573 鎖存器的輸
		出端也將輸出 0xff ,從而將所有 LED 熄滅。 */
		P0 = 0xff;
		/*  注釋 3 :通過此句代碼將 P2.7 = 0 , P2.6 = 0 , P2.5 = 0 ,不改變 P2 口其它引腳
		狀態(tài)。由 138 譯碼器的真值表可以知道此時譯碼器輸出端 Y4 處于高電平狀態(tài);因為
		為 IO 編程方式,所以 Y4 和 GND 一起經過或非 門后,輸出低電平,并連接到 573
		鎖存器的使能端口,將 573 鎖存器 “ 鎖存 “ ,此時鎖存器將輸入鎖存,輸出端口數據不
		再受到 P0 口影響。 */
		P2 &= 0x1f;
		/*  1s延時 */
		Delay1000ms();
		
		/* 與注釋 1 相同 */
		P2 = ((P2&0x1f)|0x80);
		/*  注釋 2 :因為 573 鎖存器已經 “ 打通 “ ,現(xiàn)在通過 P0 口輸出 0x00 , 573 鎖存器的輸
		出端也將輸出 0x00 ,從而將所有 LED 點亮。 */
		P0 = 0x00;
		/* 與注釋 3 相同 */
		P2 &= 0x1f;
		/*  1s延時 */
		Delay1000ms();
	}
}

2.2、MM 編程方式控制 LED

#include "reg52.h"
#include "absacc.h"

//軟件自動生成的1s延時函數
void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 43;
	j = 6;
	k = 203;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

// 主函數
void main(void)
{
	
	while(1)
	{
		XBYTE[0x8000] = 0x00; //LED 指示燈全部點亮
		Delay1000ms();//延時1s
		XBYTE[0x8000] = 0xff; //LED 指示燈全部熄滅
		Delay1000ms();//延時1s
	}
}

小結:本篇文章以上一篇的遺留問題 “ IO 編程是什么?”為引子,詳細介紹了基于 CT107D 單片機綜合訓練平臺的兩種編程方式:IO 編程和MM編程的原理及LED控制實例。從中我們看到雖然 MM 編程代碼較為短小精悍,但是不如 IO 編程代碼直觀方便。在后面的其他模塊學習及比賽中還是推薦大家使用 IO 編程方式,MM 編程僅僅作為一個擴展視野的東西即可。

希望大家多多支持我的原創(chuàng)文章。如有錯誤,請大家及時指正,非常感謝。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
本篇所含全部資料,點擊此處留下郵箱我會發(fā)給你
資料明細:資料包含種外設訪問方式:IO編程和MM編程的代碼實現(xiàn)。
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 367
收藏 351
關注 431
成為作者 賺取收益
全部留言
0/200
  • dy-i2UfRuvP 2021-05-19 13:23
    比論文強一萬倍
    回復
  • dy-iipPZRPN 2021-05-13 22:45
    不亞于看了一篇高質量論文
    回復
  • dy-3EbVR6Ei 2021-05-13 22:37
    學習了
    回復
  • dy-Xq2JxpfN 2021-05-13 22:19
    請教一下
    回復
  • dy-9g42stbW 2021-05-13 22:11
    思路清晰,受益匪淺
    回復
  • dy-mLj7kl5v 2021-05-13 20:44
    請教一下
    回復
  • dy-apcih3c1 2021-05-13 20:27
    不亞于看了一篇高質量論文
    回復
  • dy-k78ZHtFD 2021-05-13 20:09
    精彩,很多東西還沒接觸到
    回復
  • dy-nAWdnPGS 2021-05-13 18:57
    學習了
    回復
  • dy-prSX6RBY 2021-05-13 18:48
    大開眼界,真是好文
    回復
  • dy-jqGVYqsF 2021-05-13 16:53
    講的真好!
    回復
  • dy-VIQ9auhf 2021-05-13 15:07
    佩服樓主
    回復
  • dy-7mura2gg 2021-05-13 14:50
    不亞于看了一篇高質量論文
    回復
  • dy-YN3DYTeH 2021-05-13 14:42
    佩服樓主
    回復
  • dy-9hjGevyn 2021-05-13 13:59
    比論文強一萬倍
    回復
  • dy-H1WY5jXH 2021-05-13 13:27
    精彩,很多東西還沒接觸到
    回復
  • dy-wVQjSHHX 2021-05-13 13:10
    講的真好!
    回復
  • dy-88VlYaFf 2021-05-12 15:54
    佩服樓主
    回復
  • dy-9QTV6UZW 2021-05-12 15:30
    感謝分享
    回復
  • dy-9QTV6UZW 2021-05-12 15:30
    期待繼續(xù)
    回復
主站蜘蛛池模板: 日本免费不卡一区二区 | 亚洲精品国产精品久久99 | 精品国产京东免费人成网站 | 日本不卡免费高清视频在线 | 韩日免费 | 国产在线精品福利 | 欧美成人精品A∨在线观看 成人毛片视频在线观看 | avtom影院址永久入口跳转 | 久艹精品| 三级网在线观看 | 91av视频网 | 日本爆乳片手机在线播放 | 亚洲男女视频在线观看 | 少妇激情一区二区三区视频 | 亚洲人和日本人videos | 天天爽夜夜爽人人爽QC | 国产三级网 | 精品福利视频一区二区三区 | 91精品久久久久久久久中文字幕 | 在线看片免费人成视频影院看 | 成人欧美一区二区三区小说 | 亚洲国产成人精品无码区在线观看 | 强公把我次次高潮HD | 高H紫黑色的又粗又上翘 | 欧美性播放 | 免费一区二区三区在线观看 | 亚洲欧美日韩天堂一区二区 | 最好看的中文字幕第一页在线 | 久久国产视频网 | 久久久人精午夜精国 | 一本久久知道综合久久 | 蜜臀av免费 | 国产成人欧美一区二区三区一色天 | 久久99精品久久久久久水蜜桃 | 亚洲精一区二区三区 | 四虎自拍 | 91精品国产91久久 | 欧美拍拍视频免费大全 | 99久久久无码国产精品古装 | 免费看a | 亚洲kkkk4444在线播放 |