【正文】
al dedicated functions. There are, nominally, sixteen of these registers, at memory locations 0000h through 000Fh. However, only the first six are used. Locations 0000h and 0001h contain interrupt enables, and locations 0002h and 0003h contain interrupt flags. These are described in Chapter 3. Locations 0004h and 0005h contain module enable flags. Currently, only two bits are implemented in each byte. These bits are used for the USARTs. Peripheral Registers All onchip peripheral registers are mapped into memory, immediately after the special function registers. There are two types of peripheral registers: byteaddressable, which are mapped in the space from 010h to 0FFh, and wordaddressable, which are mapped from 0100h to 01FFh. RAM RAM always begins at location 0200h, and is contiguous up to its final address. RAM is used for all scratchpad variables, global variables, and the stack. Some rules of thumb for RAM usage: The developer needs to be careful that scratchpad allocation and stack usage do not encroach on each other, or on global variables. Accidental sharing of RAM is a very mon bug, and can be difficult to chase down. You need to clearly understand how large your stack will bee. Be consistent about use. Locate the stack at the very end of the RAM space, and place your most monly used globals at the beginning. Never allocate more scratchpad than you need, and always deallocate as quickly as is reasonable. You can never have too much free RAM. Boot Memory (flash devices only) Boot memory is implemented in flash devices only, located in memory locations 0C00h through 0FFFh. It is the only hardcoded ROM space in the flash devices. This memory contains the bootstrap loader, which is used for programming of flash blocks, via a USART module. Information Memory (flash devices only) Flash devices in the 39。 這也是需重要注意到,雖然在這本書的大部分信息與現(xiàn)成的 TI 的文件是相同的,這本書的目的是 補(bǔ)充,而不是替代的寶貴的信息來源。他們都有一個(gè)共同的, RISC 結(jié)構(gòu), 馮諾依曼的 CPU 核心。 目前,至少有 40 個(gè)可用,更 經(jīng)常被規(guī)律添 加。1 xx, 39。 所有設(shè)備部件編號按照以下模板: MSP430Mt Fa F bMc M:內(nèi)存類型 C: ROM F: Flash P: OTP E: EPROM (為推導(dǎo)使用 . 有以下幾種 .) F a, F b: 系列和結(jié) 構(gòu) 10, 11: 基本 12, 13: 硬件串口 14: 硬件串口 , 硬件乘法器 31, 32: LCD 控制器 33: LCD 控制器 , 硬件串口 , 硬件乘法器 41: LCD控制器 43: LCD控制器 , 硬件串口 44: LCD 控制器 , 硬件串口 , 硬件乘法器 Mc: 電容存儲器 3 0: 1kb ROM, 128b RAM 1: 2kb ROM, 128b RAM 2: 4kb ROM, 256b RAM 3: 8kb ROM, 256b RAM 4: 12kb ROM, 512b RAM 5: 16kb ROM, 512b RAM 6: 24kb ROM, 1kb RAM 7: 32kb ROM, 1kb RAM 8: 48kb ROM, 2kb RAM 9: 60kb ROM, 2kb RAM 例如: MSP430F435 是帶有 LCD控制器的 FLASH 存儲器設(shè)備,硬件串口, 16 KB 的程序存儲器和 512 字節(jié)的 RAM。 相反,一旦你 有一個(gè) 必要條件您存在 模糊的想法,到TI的網(wǎng)站( ) 使用 它們的參數(shù) 排序功能。 它由一個(gè)三級 指令棧道,指令解碼,一個(gè) 16 位 ALU, 4 個(gè)專用用途寄存器和 12 個(gè)工作(或暫存器)寄存器。首先,設(shè)計(jì)師在德州儀器公司未來的發(fā)展留下了非常多的空間。該程序設(shè)計(jì)的風(fēng)格略有不同,可以可以大大提高效率,特別是在 知 道如何將這個(gè)功能發(fā)揮到極致的 程序員手中 。有兩種總線,一個(gè)單一的線性存儲空間,一個(gè) 不平凡的 處理器核心,所有外設(shè)都是存儲器映射。 ALU 的操作可以影響溢出,零,負(fù),和進(jìn)位 。)他們用于寄存器模式操作(見尋址方式,第 8章)這遠(yuǎn)比需要的內(nèi)存訪問的操作有效率。但是,一些開發(fā)工具將保留 R4 和 R5 調(diào)試信息。它 們使用清楚的記錄?,F(xiàn)在,它是相對的 雜亂信息 。它 同樣服務(wù)于 狀態(tài)寄存器。由于個(gè)別內(nèi)存位置地址是 8 位,但所有的指令都是 16 位,個(gè)人電腦被數(shù)目限制(即個(gè)人電腦的 LSB 始終為零)。 Example Switch Statement via Manual PC Control Mov value,R15 。more range checking Jn outofrange 。PC goes to proper jump Jmp value0 Jmp value1 Jmp value2 Jmp value3 Jmp value4 Jmp value5 Jmp value6 Jmp value7 Outofrange Jmp RangeError 這是一個(gè)比較普遍的做法,大多數(shù) C編譯器將使用類似 switch 語句的東西。 密切注意 轉(zhuǎn)移語句 尋址方式。最常見的程序是推動寄存器到堆棧在 ISR 的開始, 并在 ISR 的結(jié)束是 彈出。用 R12 作為空間 Rla R12 Rla R12 Mov R12amp。中斷返回 ORG 0FFF0h DW Timer_A_Hi_Interrupt 狀態(tài)寄存器 狀態(tài)寄存器 在 R2中應(yīng)用 ,包含 各系統(tǒng)的標(biāo)志。 1=發(fā)生進(jìn)位 0=不發(fā) 生進(jìn)位 ?零標(biāo)志位( Z) 位: 1 功能:當(dāng)運(yùn)算結(jié)果 為 0 時(shí)置位 ,可通過軟件或自動的設(shè)置或清除 。 1=允許中斷 0=不允許中斷 ? CPU 控制位( CPUOff) 位: 4 功能:是否允許 CPU 進(jìn)入關(guān)閉模式 ,可通過軟件清除 和恢復(fù)中斷 。 RAM 和寄存器內(nèi)容保持。當(dāng)兩個(gè)正數(shù)一起相加,并且結(jié)果為負(fù),或當(dāng)兩個(gè)負(fù)數(shù)相加結(jié)果為正時(shí)發(fā)生溢出。作為一個(gè)程序員,你需要理 解這種相互作用。 PUSH 命令 將 SP在 RAM 向下移動 一個(gè)字符 ( SP= SP 2),并將 數(shù)值放在新的 SP。設(shè)置堆棧指針 作為您 初始化的一部分, 之后 不要 手動的反復(fù)折騰 。如果你 推入許多 變數(shù), 并且沒有彈出他們 ,它會回來困擾你。如果你的程序有多 重 中斷,子程序調(diào)用,或手動推 入,堆棧將占用更多的內(nèi)存, 您的代碼 可能會覆蓋其他地方的數(shù)值 。 地點(diǎn)為 0000H 和 0001h 包含中斷 能 力 , 和位置 0002h 和 0003h 包含中斷標(biāo)志。這些位用于 USART。 RAM 是用于所有暫存器變量,全局變量和堆棧。 請 使用一致的。 引導(dǎo)存儲器( 只有 閃存器件) 引導(dǎo)存儲器只在 閃存器件中實(shí)現(xiàn),在存儲器中 位于地 址 0C00h 到 0FFFh。430 家庭閃存設(shè)備具有 信息內(nèi)存的 新增功能。 代碼 存儲器 代碼存儲器是在 地址空間一直 連續(xù)的 (即 一直運(yùn)行到位置 0FFFFh)。編程和使用中的這些描述第三章詳細(xì)。 ROM ROM 設(shè)備,也被稱為 帶掩模的 設(shè)備,是由 部分號碼中的 字母 “C” 確定 。他們也應(yīng)該只用于穩(wěn)定設(shè)計(jì)。 OTP是運(yùn) 送間隔 ,可以 在任何時(shí)候編程 。 EPROM TI 提供了 幾個(gè) 裝置的有窗的 EPROM 的版本 用于發(fā)展的應(yīng)用 。它們不是用于生產(chǎn)使用,但 在發(fā)展中為仿真 ROM 設(shè)備取得 理想平臺為。 。他們更昂貴,但代碼空間可擦除和重新編程,如果必要的 可以數(shù)千次 。這些設(shè)備是 用 電 的 可編程,和 UVerasable。他們 也需要編程,這可能在大量生產(chǎn) 環(huán)境 中是一個(gè)障礙 。 9 OTP OTP是 “ 一次性可編程 ” 的縮寫,這相當(dāng)不錯(cuò)介紹了這些設(shè)備的功能。他們的特點(diǎn),是非常便宜的優(yōu)勢,并可能 是 高容量設(shè)計(jì)的最佳解決方案。 存儲器 類型由 部分號碼中直接在“MSP430” 之后 的 字母 定義的 。所有代碼,表和 硬空格字符 的常數(shù)在這個(gè) 存儲 空間。它分為二 個(gè) 128 字節(jié)的 部分 。這種存儲器包含引導(dǎo) 裝入程序 ,它是 通過一個(gè) USART 模塊 用來編程的閃存模塊 。 從不分配比你的需要多的 暫存器,始終 盡快合理的 釋放 分配 。 RAM 共享是很常見的錯(cuò)誤,并且 很難找出 。有兩種類型的外設(shè)寄存器:字節(jié)尋址,這是從 010h 到 0FFh 映射在空間,和字尋址,這是從 0100h 到 01FFh 映射。 地 址 0004h 和 0005h 包含模塊啟用標(biāo)志。 還有,名義上 16 位的 這些寄存器,在內(nèi)存地址 0000H 到 000Fh。 堆棧侵 占 。這兩個(gè)條件是: 不對稱 的 推 入 /彈出 組合。 CALL語句 和中斷從 TOS(堆棧頂部)把 PC, RET 和 RETI 指令彈出 回 到 PC。像程序計(jì)數(shù)器, LSB的被確定為一個(gè)零值,因此該值始終是偶數(shù)。你會看到這本書 中常常提到這些標(biāo)志 ,因?yàn)樗鼈兊墓δ艽硪粋€(gè)基本組成部分。 ?溢出標(biāo)志位( V) 位: 8 功能: 當(dāng)操作結(jié)果溢出時(shí)置位。 1=CPU is on 0= CPU is off ?晶振控制位( OscOff) 位: 5 功能:是否允許 晶體振蕩器停止( LFXT1) ,可通過軟件清除 和恢復(fù)中斷 。 這個(gè)標(biāo)志反應(yīng)最高有效 位 的操作結(jié)果數(shù)值( 位操作 7位,字符操作 15位 ) 1=結(jié)果出現(xiàn) 負(fù) 0=結(jié)果不出現(xiàn) 負(fù) ?中斷控制位( GIE) 位: 3 功能:是否允許所有掩碼的中斷,可通過軟件或自動的設(shè)置或清除。 7 個(gè) 最重要的位是不確定的。完 成于 R12 的 Pop R12 。 Example Push/Pop Combination in ISR Timer_A_Hi_Interrupt Push R12 。 小心你的中斷處理程序都沒有可能影響你的