untitled



Similar documents
Microsoft Word - MSP430 Launchpad 指导书.docx

学习MSP430单片机推荐参考书

untitled

MSP430 MSP430 F149 MSP430F149 P USART MSP430F PWM 63#

untitled

MSP430x11x1 T A -40 ~ SOWB 20 TSSOP (DW) (PW) MSP430F110IDW MSP430F110IPW MSP430F112IDW MSP430F112IPW + F11x 30kΩ

MSP430F KB+256B flash 10KB RAM 64 Quad Flat Pack QFP MSP430x1xx SLAU049 MSP430 MSP RISC CPU 16 DCO 6 MSP430x15x/16x/161x A/D 12 D/A

Microsoft Word - µÚ14ÕÂ OA.doc

(3)ADC12Ó¦Ó÷¶Àý

MSP430单片机简介

第三章 3.5 Flash 使用的代码样例 #include "msp430g2553.h" /**************************************************** g2553 有 4 个数据段, 每个数据段有 64bytes, 共 256bytes D:0x10

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

MSP430

议程 介绍 Value Line 系列 Code Composer Studio CPU 与基本时钟模块 中断与 GPIO Timer_A 与 WDT+ MSP430 低功耗设计 ADC10 和 Comparator_A+ 串行通信模块 Grace 电容式触摸按键解决方案

MSP430 Launchpad 指导书

Getting Started with the MSP430 LaunchPad

DPJJX1.DOC

bingdian001.com

目 录

1 TPIS TPIS 2 2

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

超级好的移值过程介绍: μC/GUI在MSGl9264液晶上的移植

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

目录

51 C 51 isp 10 C PCB C C C C KEIL

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

<4D F736F F D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

变量名 :JAVA_HOME, 变量值 : 你的安装路径 \Java\jdk 版本号 3 接下来查看系统变量, 如果其中有 classpath 和 path 变量, 则在其值后面分别添加 : ; 你的安装路径 \Java\jdk 版本号 \jre\lib 和 ; 你的安装路径 \Java\jdk 版

Microsoft Word - MSP_430学习笔记.doc

RO 电容检测 : 其原理就是测震荡电路频率, 关键参数在电容 ----C1 的充放电,R5 和 C1 构成一阶 RC 震荡电路 比较器的输入电压时随着输出电压变化而变化的, 而比较器负输入端电压是由 C1 充放电决定 通过计算可以发现, 电容电压在 1/3VCC-2/3VCC 之间反复变化 其震荡

12232A LED LED LED EL EL CCFL EL CCF

SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input HR7PPSC HR7PPSD SOP SOP6 +input input HR7PERB SSOP0 7

Microsoft Word - 10

Microsoft Word - 正文.doc

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

( RMB100,000)

untitled

从MCS51向AVR的快速转换.PDF

2005.book

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

26 头 孢 他 啶 注 射 剂 27 头 孢 他 美 酯 口 服 常 释 剂 型 28 头 孢 吡 肟 注 射 剂 29 头 孢 硫 脒 注 射 剂 30 头 孢 唑 肟 注 射 剂 31 头 孢 替 安 注 射 剂 32 头 孢 哌 酮 注 射 剂 33 头 孢 哌 酮 舒 巴 坦 注 射 剂

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

C语言的应用.PDF

标题

僑生(含港澳生)及外籍生參加全民健康保險實施要點

华恒家庭网关方案

CC213

項 別 檢 核 項 目 檢 核 標 準 備 註 活 動 計 畫 執 行 情 形 效 益 評 估 計 畫 擬 定 非 常 滿 意 滿 意 尚 可 待 改 進 不 適 用 行 前 準 備 非 常 滿 意 滿 意 尚 可 待 改 進 不 適 用 內 容 設 計 非 常 滿 意 滿 意 尚 可 待 改 進

D/A DAC ( 1us) (10~20 ) DAC0832 1

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 18

EK-STM32F

ICD ICD ICD ICD ICD

微處理機期末專題

Microsoft Word - µÚ4ÕÂ Basic clock+.doc

103 USB C#.NET VB6 100 USB USB (Open Source) LibUsbDotNet USB Library.NET LibUsbDotNet Visual Basic.NET 2010 Express VB.NET 劉政鑫 王嘉鴻 i

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

安泰科技股份有限公司2013年度报告全文

Microsoft Word - 430实验说明.doc

上海东软载波微电子有限公司 SMART

MCU Day 2009: MSP430 Ultra-Low Power MCUs

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

Arduino 1-1 Arduino 1-2 Arduino 1-3 Arduino IDE

Trio Motion Coordinator MC202 mm 94 *56 *107DIN 200g 0~45 / RS232C 9600 CAN 32-bit 1~3 Trio BASIC VB VC C/C bit 1ms 128k 18~29V 150mA 24V 150mA

1

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

HCS08微控制器上有关内存分配的几个问题.doc

利尔达科技有限公司 LSD SCIENCE & TECHNOLOGY CO., LTD. 文 件 修 改 记 录 台 帐 项目名称 编制人 项目型号 张斌斌 审核人 编制日期 审核日期 序号 修改日志 1 公司地址:杭州市登云路 425 号杭州利尔达科技大

新版 明解C言語入門編

SPMC75F2413A_EVM_使用说明_V1.2.doc

中文摘要 本系統採用德州儀器 MSP430 系列的晶片, 配合具有 HID 人機介面的藍芽來遙控智慧行動裝置遊戲軟體 目的在於使用第三方裝置來無線操作 Android 手機裡的遊戲, 讓手機遊戲增加更多玩法及趣味性, 以此改變傳統的手機遊戲 英文摘要 The system uses a Texas

专业主干课程与主要专业课程教学大纲(2009年、2011年).doc

Microsoft Word - MSP430F³£ÓÃÄ£¿éÓ¦ÓÃÔ�Àí.doc

查询 MSP430F110 供应商 捷多邦, 专业 PCB 打样工厂,24 小时加急出货 Low Supply Voltage Range 1.8 V to 3.6 V Ultralow-Power Consumption: Active Mode: 200 µa at 1 MHz, 2.2 V S

AIG Assist紧急救援服务卡使用手册

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

<4D F736F F D20B9E3CEF7B9A4C9CCD6B0D2B5BCBCCAF5D1A7D4BA D D1A7C4EAD0C5CFA2B9ABBFAAB9A4D7F7C4EAB6C8B1A8B8E6A3A8C9CFCDF8A3A9>

untitled

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

第7章-并行计算.ppt

<4D F736F F D20C7B6C8EBCABDCAB5D1E9CAD2B7BDB0B82E646F63>

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6BFBCCAD4B4F3B8D92E646F63>

PIC16F F MPLAB 08 16F LED 15 LED

instructions.PDF

新・解きながら学ぶC言語

图 片 展 示 : 资 源 简 介 : FPGA Altera CycloneII EP2C5T144C8 (4608 个 LE) 2 路 有 源 晶 振 (50M,25M) AS & JTAG 标 准 接 口 VGA 接 口 UART 接 口 蜂 鸣 器 8bit 并 行 DAC 8 路 按 键

逢 甲 大 學

第5章修改稿

USB解决方案.ppt

untitled

Microsoft PowerPoint - _教師手冊 講義(上課部分).pptx

第3章.doc

Application Note Format

FY.DOC

新版 明解C++入門編

第 1 章 MSP430 快速入门 因为最近转入 MPS430 的技术支持工作, 所以现在开始学习 430 的开发 由于之前用过 51, 也用过 TI 的 ARM CORTEX-M3, 但是就是没有用过 TI 的 430, 所以将 我学习 430 的过程写出来, 给像我一样之前没有 430 开发经验

第10章:CCP捕捉/比较/脉宽调制

Transcription:

430F22X 430F22X...1...2 1.1 MSP430F2274... 2 1.1.1...2 1.1.2...3 1.1.3...3 1.1.4...5 1.2... 5 1.3...6 MSP430 (IAR)...7 2.1 F:/...7 2.2...7 2.3 IAR3.41A...7 1...7 2*.S43/*.C... 8 3...9 4...11 5...11...12 I/O... 13...15 FLASH...18...22 16 Timer_A...25 ADC10... 30 OA...36 USCI...42 C... 53 I/O... 53...54 FLASH...56...60 16 Timer_A...63 ADC10... 67 OA...71 USCI...76 1

1.1 MSP430F2274 1.1.1 1.8~3.6V 1 250µA @1MHz,2.2V; 2 0.7µA; 3RAM 0.1µA 45 1µs 62.5n 116MHZFLASH A / 16 Timer_ATimer_B 1 2/ 3 SPI 4I2C 5LIN 10 200-ksps A/D 2 OA0OA1 Brownout Detector) FLASH 32KBRAM 1KB Bootstrap Loader) 1Spy-Bi-Wire 24-Wire JTAG 1.1.2 MSP430F2274 1.1 2

1.1 MSP430F2274 1.1.3 MSP430F2274 38-Pin SSOP 40-Pin QFN, 1.2 1.3 1.2 MSP430F2274 38-Pin SSOP 3

1.3 MSP430F2274 40-Pin QFN MSP430F449 1.1.4 1.4 2274 4

1.2 1.3 1 5

MSP430 (IAR) 1 2.1 6

2.4 2.2 2*.S43/*.C 2.3 7

3 LSD SCIENCE & TECHNOLOGY CO., LTD. WWW.LIERDA..COM 2.4 CategoryGeneral Options,TargetDevice CategoryDebugger 2.5driver simulatorfet Debugger FET DebuggerFET Debugger 2.6 ConnectionLpt 8

2.5 2.6 9

4 10

IAR 3.41A MSP430 MSP430 MSP430 IAR INC P1.0 (1) MOV.B #01H, &22H MOV.B #01H, &21H #include "msp430x44x.h" MOV.B #BIT0, &P1DIR MOV.B #BIT0, &P1OUT (2)C #include "msp430x22x4.h" P1DIR = 0x01 P1OUT = 0x01 P1DIR 22HP1OUT 21H msp430x22x4.h BIT0 #define BIT0 (0x0001), C msp430x22x4.h msp430x22x4.h INC 11

I/O LED 2274 P1.0 LED LED P1.0 P1.0OUT=0,LED, LED ; 1 LED 2 3 NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL MOV.B #BIT0,&P1DIR ;P1.0 MOV.B #BIT0,&P1OUT mainloop MOV.W #50000,R4 ; 12

wait DEC.W R4 JNZ wait XOR.B #BIT0,&P1OUT ;P1.0 LED / JMP mainloop END main 13

2274 2274 XTAL1VLODCO MCLKSMCLK ACLK 12274DCO 2 Clock_def.h I/OClock_def.h DCO_FREQUENCY DCO 1MHZ8MHZ12MHZ 16MHZACLK_VLOCLK ACLK VLO 32768 SMCLK_LFC SMCLK ACLK DCO MCLK_XT2_OR_LFC MCLK ACLK DCO 1 22274 \example_code\2274_asm\clock_ctl 14

NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; #if (DCO_FREQUENCY==1) MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL #elif (DCO_FREQUENCY==8) MOV.B &CALBC1_8MHZ,&BCSCTL1 ; DCO 8MHZ MOV.B &CALDCO_8MHZ,&DCOCTL #elif (DCO_FREQUENCY==12) MOV.B &CALBC1_12MHZ,&BCSCTL1 ; DCO 12MHZ MOV.B &CALDCO_12MHZ,&DCOCTL #elif (DCO_FREQUENCY==16) MOV.B &CALBC1_16MHZ,&BCSCTL1 ; DCO 16MHZ MOV.B &CALDCO_16MHZ,&DCOCTL #endif BIS.B #BIT4,&P1SEL ;P1.4 SMCLK BIS.B #BIT4,&P1DIR ;P2.1 SMCLK,P2.0 ACLK BIS.B #BIT0+BIT1,P2SEL BIS.B #BIT0+BIT1,P2DIR #ifdef ACLK_VLOCLK BIS.B #LFXT1S1,&BCSCTL3 ;ACLK VLO #endif #ifdef SMCLK_LFC ;SMCLK LFC(LFXT1CLK VLOCLK ACLK_VLOCLK ) BIS.B #SELS,&BCSCTL2 #endif #ifdef MCLK_XT2_OR_LFC ;MCLK BIS.B #SELM1,&BCSCTL2 #endif mainloop JMP mainloop 15

END main 16

FLASH FLASH 2274FLASH FLASH A FLASH VCC DATA SHEET 12xxFLASH (2274 32KB+256byte) (2) MEMORY 01000H FALSH ALOCK 4xx FLASH A A 1 17

22274 \example_code\2274_asm\flash_rw #define SEGD_START 0x1000 ; D #define SEGC_START 0x1040 ; C NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL MOV.W #SEGD_START,R4 ; segd R4, CALL #erase_seg ; CALL #write_segd ; MOV.W #SEGC_START,R4 ; segc R4, CALL #erase_seg 18

CALL #copy_d_to_c ; CALL #sega_operation ; A, SEGA mainloop JMP mainloop erase_seg MOV.W #FWKEY+FSSEL1+FN1,&FCTL2 ;flash SMCLK,f(FTG)=SMCLK/3 MOV.W #FWKEY,&FCTL3 ;LOCK 0 MOV.W #FWKEY+ERASE,&FCTL1 ; CLR.W 0(R4) ; flash MOV.W #FWKEY+LOCK,&FCTL3 ; LOCK RET write_segd MOV.W #FWKEY,&FCTL3 ;LOCK 0 MOV.W #FWKEY+WRT,&FCTL1 ;flash MOV.B #00H,R5 ; write_loop MOV.B R5,0(R4) ; INC.B R5 INC.W R4 CMP.W #1040H,R4 JNE write_loop MOV.W #FWKEY+LOCK,&FCTL3 ; LOCK RET copy_d_to_c MOV.W #FWKEY,&FCTL3 MOV.W #FWKEY+WRT,&FCTL1 MOV.W #SEGD_START,R5 copy_loop ; MOV.B @R5+,0(R4) INC.W R4 CMP.W #1080H,R5 JNE copy_loop MOV.W #FWKEY+LOCK,&FCTL3 RET sega_operation ; LOCKA, A 19

BIT #LOCKA,&FCTL3 ; LOCKA JZ sega_unlock ;LOCKA 0? MOV #FWKEY+LOCKA,&FCTL3 ; LOCKA 0 sega_unlock ; LOCKA, A BIT #LOCKA,&FCTL3 ; LOCKA JNZ segalocked MOV #FWKEY+LOCKA,&FCTL3 segalocked RET END main 20

1 2 1 2 3 4 5 WDT 1 WDT WDTTMSEL=1 WDTSSEL WDTISx SOURCE/32768(WDTISx=00)SOURCE/8192(WDTISx=01) SOURCE/512(WDTISx=10)SOURCE/64(WDTISx=11) P1.0 LED 2 WDT WDTTMSEL=0 IFG1 WDTIFG PUC WDTIFG PUC WDTIFG WDT WDTIFG LED 1 32274 \example_code\2274_asm\wdt_operation\wdt_timer NAME main PUBLIC main 21

;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main ORG 0FFF4h ; DC16 wdt_timer RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL ;, ACLK, ACLK/32768(WDTISx=0) MOV.W #WDTPW+WDTTMSEL+WDTSSEL+WDTCNTCL,&WDTCTL BIC.B #BIT0,&P1OUT MOV.B #BIT0,&P1DIR ; P1.0(led) BIS.B #WDTIE,&IE1 ; WDT EINT ; mainloop BIS.B #LPM3,SR ; LPM3,ACLK(WDT ) wdt_timer ; XOR.B #BIT0,P1OUT ;P1.0 RETI END main 1 22

22274 \example_code\2274_asm\wdt_operation\wdt_wdt 23

16 Timer_A 1 A 2 A 3 A PWM 1 Timer_A 2 Timer_A 3 Timer_A 3 / 8 PWM 4 Timer_A 5 Timer_A 6 Time_A 1 A Timer_A CCR1 50000 SMCLK P1.0 LED 2 A Timer_A CCR2 ACLK CCR2 SMCLK R7 3APWM Timer_A SMCLK=32768*32, OUTMOD_7Rset/Set CCR0=512,CCR1=384, CCR2=128 PWM 512/32768*32TA1 384512-384=21TA2 12 P1.2P1.3 A 1 24

22274 \example_code\2274_asm\ta_operation\ta_1 25

A 1 22274 \example_code\2274_asm\ta_operation\ta_2 26

PWM 1 22274 \example_code\2274_asm\ta_operation\ta_3 27

28

ADC10 1ADC10 2ADC10 1 ADC10 2 ADC10 3 ADC10 4 ADC10 6 ADC10 5 ADC 1ADC10 ADC10 ADC10SC AD ADC10MEM, V(temp)=0.00355*TempC+0.986, AD 1.5V Tc=(0D34h*AD_value-0457h*800h)>>13, AD_value AD R6, 2ADC10ADC10 TA.OUT1ADADC10MEM ad_value,ad ADC10 1 22274 \example_code\2274_asm\adc10_operation\adc10_sch_st NAME main 29

PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main ORG 0FFEAh DC16 adc_isr RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL MOV.W #INCH_10,&ADC10CTL1 ; 10, MOV.W #REFON+SREF_1,&ADC10CTL0 ; 1.5V, ; ADC10, 64 ADC10CLK, ADC10 BIS.W #ADC10ON+ADC10SHT_3+ADC10IE,&ADC10CTL0 BIS.W #ENC+ADC10SC,&ADC10CTL0 ; AD EINT ; BIS.W #CPUOFF,SR ; 0 MOV.W #0D34h,R5 ;0D34*AD_value MOV.W #0,R6 ;R6 MOV.W #0,R7 ;R7 add_loop ADD.W R4,R6 JNC next NC.W R7 next DEC.W R5 JNZ add_loop left_mov MOV.W #0457h,R8 ;0457*800h MOV.W #0,R9 MOV.B #11,R10 RLA.W R8 ;R8 RLC.W R9 ;R9 DEC.B R10 JNZ left_mov 30

SUB.W R8,R6 ;0D34h*AD_value-0457h*800h SUBC.W R9,R7 ;(0D34h*AD_value-0457h*800h)>>13 MOV.B #13,R10 rig_mov RRA.W R7 RRC.W R6 DEC.B R10 JNZ rig_mov ; R6 mainloop BIS.W #CPUOFF,SR ; 0 NOP adc_isr; MOV.W &ADC10MEM,R4 ; AD R4 NOP BIC.W #CPUOFF,0(SP) RETI END main ADC10 1 31

22274 \example_code\2274_asm\adc10_operation\adc10_sch_rt - ADCDeltaOn EQU 3; AD AD +ADCDeltaOn,P1.0 - NAME main PUBLIC main - ; MSP430F22x - ORG 0FFFEh DC16 main ORG 0FFEAh ;ADC10 DC16 adc10_isr ORG 0FFF2h ;TIMER_A1 DC16 ta0_isr RSEG CODE ; 32

main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL ; AD 4, 10,AD TA.OUT1, MOV.W #ADC10DIV_3+INCH_10+SHS_1+CONSEQ_2,&ADC10CTL1 ; 2.5V,,AD,, AD ( AD ) MOV.W #SREF_1+ADC10SHT_3+REF2_5V+ADC10IE+REFON+ADC10ON,&ADC10CTL0 MOV.W #30,&TACCR0 ; BIS.W #CCIE,&TACCTL0 ;CCR0 MOV.W #TACLR+MC_1+TASSEL_2,&TACTL;TA, smclk BIS.W #LPM0+GIE,SR ; 0, BIC.W #CCIE,&TACCTL0 ;CCR0 DINT ; BIS.W #ENC,&ADC10CTL0 ;AD MOV.W #OUTMOD_4,&TACCTL1 ;CCR1 4, TAR=0, MOV.W #TASSEL_2+MC_2,&TACTL ;TA,smclk ADC_wait BIT.W #ADC10IFG,&ADC10CTL0 ; JZ ADC_wait MOV.W &ADC10MEM,R4 ; AD ADD.W #ADCDeltaOn,R4 ; AD ADCDeltaOn CLR.B &P1OUT BIS.B #01h,&P1DIR ; mainloop BIS.W #LPM0+GIE,SR ; 0, NOP ; - ta0_isr; ISR for TACCR0 - CLR.W &TACTL ;TA BIC.W #LPM0,0(SP) ; RETI - adc10_isr; - CMP.W R4,&ADC10MEM ; AD AD +ADCDeltaOn,P1.0 JLO adc_isr_1 BIS.B #01h,&P1OUT RETI adc_isr_1 BIC.B #01h,&P1OUT ; p1.0 RETI END main 33

1ADC10, 2ADC10 3 34

OA 1OA 2 2OA 3 3OA 4 4OA 45 1 OA 2 OA 3 4 OA 1OA 2 OA0 2(unity gain)p2.0 (0~AVCC )P2.1 ( AVCC) 2274 AVss OAFBR P2.0,, 2OA 3 OA0 3(comparator)P2.0 (0~Vcc) AVss OAFBR p2.0,, 3OA 4 OA0 4non_inverting)P2.0 ( )P2.1 ( AVCC) AVss 4OA 45 OA0 4, OA1 5,P2.0 OA0 () P2.3 OA1 ( AVCC) AVss, OA1 OA0 OAFBRx AD, OA 2 1 22274 \example_code\2274_asm\oa_operation\oa_m2 NAME main PUBLIC main 35

;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL BIS.B #BIT0+BIT1,&P2SEL ;P2.0,2.1 BIS.B #BIT1,&P2OUT ;p2.1,oa0 ; OA0, 2.4 MOV.B #OAP_0+OAPM_3+OAADC1,&OA0CTL0 ;OAP OA0I0, fast, A1,A3 A5 MOV.B #OAFBR_1+OAFC_2,&OA0CTL1 ;R2/R1=4R/16R, 4R ;MOV.B #OAFBR_2+OAFC_2,&OA0CTL1 ;R2/R1=8R/8R, 8R ;MOV.B #OAFBR_3+OAFC_2,&OA0CTL1 ;R2/R1=10R/6R, 10R ;MOV.B #OAFBR_4+OAFC_2,&OA0CTL1 ;R2/R1=12R/4R, 12R ;MOV.B #OAFBR_5+OAFC_2,&OA0CTL1 ;R2/R1=13R/3R, 13R ;MOV.B #OAFBR_6+OAFC_2,&OA0CTL1 ;R2/R1=14R/2R, 14R ;MOV.B #OAFBR_7+OAFC_2,&OA0CTL1 ;R2/R1=15R/1R, 15R NOP BIS.B #LPM3,SR NOP END main OA 3 12274 \example_code\2274_asm\oa_operation\oa_m3 2 NAME PUBLIC main main 36

;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL BIS.B #BIT0+BIT1,&P2SEL ;P2.0,2.1 BIS.B #BIT1,&P2OUT ;p2.1,oa0 ; OA0, 2.4 MOV.B #OAP_0+OAPM_3+OAADC1,&OA0CTL0 ;OAP OA0I0, fast, A1,A3 A5 MOV.B #OAFBR_1+OAFC_3,&OA0CTL1 ;R2/R1=4R/16R, 4/16AVcc ;MOV.B #OAFBR_2+OAFC_3,&OA0CTL1 ;R2/R1=8R/8R, 8/16AVcc ;MOV.B #OAFBR_3+OAFC_3,&OA0CTL1 ;R2/R1=10R/6R, 10/16AVcc ;MOV.B #OAFBR_4+OAFC_3,&OA0CTL1 ;R2/R1=12R/4R, 12/16AVcc ;MOV.B #OAFBR_5+OAFC_3,&OA0CTL1 ;R2/R1=13R/3R, 13/16AVcc ;MOV.B #OAFBR_6+OAFC_3,&OA0CTL1 ;R2/R1=14R/2R, 14/16AVcc ;MOV.B #OAFBR_7+OAFC_3,&OA0CTL1 ;R2/R1=15R/1R, 16/16AVcc NOP BIS.B #LPM3,SR NOP END main OA 4 1 37

22274 \example_code\2274_asm\oa_operation\oa_m4 NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL BIS.B #BIT0+BIT1,&P2SEL ;P2.0,2.1 BIS.B #BIT1,&P2OUT ;p2.1,oa0 ; OA0, 2.4 MOV.B #OAP_0+OAPM_3+OAADC1,&OA0CTL0 ;OAP OA0I0, fast, A1,A3 A5 MOV.B #OAFBR_0+OAFC_4,&OA0CTL1 ;R2/R1=0R/16R, 4(,=1+R2/R1) MOV.B #OAFBR_1+OAFC_4,&OA0CTL1 ;R2/R1=4R/12R MOV.B #OAFBR_2+OAFC_4,&OA0CTL1 ;R2/R1=8R/8R MOV.B #OAFBR_3+OAFC_4,&OA0CTL1 ;R2/R1=10R/6R MOV.B #OAFBR_4+OAFC_4,&OA0CTL1 ;R2/R1=12R/4R MOV.B #OAFBR_5+OAFC_4,&OA0CTL1 ;R2/R1=13R/3R MOV.B #OAFBR_6+OAFC_4,&OA0CTL1 ;R2/R1=14R/2R MOV.B #OAFBR_7+OAFC_4,&OA0CTL1 ;R2/R1=15R/1R NOP BIS.B #LPM3,SR NOP END main OA 45 1 38

2 3 42274 \example_code\2274_asm\oa_operation\oa_m5 NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- 39

ORG 0FFFEh DC16 main ORG 0FFEAh DC16 adc_isr RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL BIS.B #BIT0+BIT1+BIT3+BIT4,&P2SEL ;P2.0,2.1,2,3 OA0I0 BIS.B #BIT3,&P2OUT ;p2.1,oa1 ; OA0 4 MOV.B #OAP_0+OAPM_3,&OA0CTL0 ;OAP OA0I0, fast,oa0out MOV.B #OAFBR_2+OAFC_4,&OA0CTL1 ; 4, 1+8R/8R ; OA1 5 ; OA0, fast, A3 MOV.B #OAP_3+OAPM_3+OAADC1,&OA1CTL0 MOV.B #OAFBR_2+OAFC_5,&OA1CTL1 ; 5, 1+8R/8R ; OA1 AD MOV.W #INCH_3,&ADC10CTL1 ; 10 MOV.W #REFON+SREF_1+REF2_5V,&ADC10CTL0 ; 2.5V, BIS.W #ADC10ON+ADC10SHT_3+ADC10IE,&ADC10CTL0 ; ADC10, 64 ADC10CLK, ADC10 BIS.W #ENC+ADC10SC,&ADC10CTL0 ; AD EINT ; adc_isr; MOV.W &ADC10MEM,R4 ; AD R4 NOP RETI ; END main 40

USCI 1USCI_A0 UART 2USCI_A0 SPI 3USCI_B0 I2C 1 USCI 2 USCI 3 UART 4 SPI 3 4 5 I2C 6 1USCI_A0 UART USCI_A0 2274 BIS.B #UCLISTEN,&UCA0STAT 00FF 0400 RAM NOP RAM 2USCI_A0 SPI USCI_A0 400 RAM PC 00FF 400H500H RAM 3USCI_B0 I2C USCI_B0 I2C 2274 PC 88 099 88 400H RAM 41

USCI_A0 UART 1 LSD SCIENCE & TECHNOLOGY CO., LTD. WWW.LIERDA..COM 22274 \example_code\2274_asm\usci_operation\usci_duplex_1200 3 MEMPTR EQU 0400h ; NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main ORG 0FFEEh 42

DC16 rx_isr ORG 0FFECh DC16 tx_isr RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL MOV.W #MEMPTR,R6 ; RAM R6 MOV.B #0,R8 ;R8 wait BIC.B #OFIFG,&IFG1 ; BIT.B #OFIFG,&IFG1 JNZ wait BIS.B #BIT0,&P1DIR ; LED BIS.B #BIT0,&P1OUT BIS.B #BIT4+BIT5,&P3SEL ;p3.4 TX,P3.5 RX BIS.B #BIT4,&P3DIR ;P3.4 ;BIS.B #UCLISTEN,&UCA0STAT ; BIS.B #UCSSEL0,&UCA0CTL1 ; 32768 MOV.B #00H,&UCA0BR1 ; 32768/1200=27.3 MOV.B #27,&UCA0BR0 BIS.B #UCBRS1,&UCA0MCTL ;UCBRSx=INT(0.3*8)=2 BIC.B #UCSWRST,&UCA0CTL1 ; USCI BIS.B #UCA0RXIE+UCA0TXIE,&IE2 ; EINT ; mainloop BIS.B #LPM3,SR ; 3 NOP rx_isr; XOR.B #BIT0,P1OUT ;, LED MOV.B &UCA0RXBUF,0(R6) ; R6 RAM CMP.W #MEMPTR+0FFh,R6 ; 256 JNZ loop3 ; 256, MOV.W #MEMPTR,R6 ; 256,R6 43

loop3 INC.W R6 ;R6 RETI ; tx_isr; XOR.B #BIT0,P1OUT ;, LED MOV.W #15000,R5 ;, loop1 DEC.W R5 JNZ loop1 MOV.B R8,&UCA0TXBUF ; INC.B R8 ; 1 RETI END main USCI_A0 SPI 1 2 44

3 2274 \example_code\2274_asm\usci_operation\spi_int_ma () 2274 \example_code\2274_asm\usci_operation\spi_int_sa MEMPTR EQU 0400h ; NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main ORG 0FFEEh DC16 rx_isr RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL MOV.W #MEMPTR,R6 ; MEMPTR R6 MOV.B #01h,R8 ;R8 wait_osc BIC.B #OFIFG,&IFG1 ; 45

BIT.B #OFIFG,&IFG1 JNZ wait_osc BIS.B #BIT0,&P1DIR ;LED BIS.B #BIT4+BIT5+BIT0,&P3SEL ;p3.4 TX,P3.5 RX,P3.0 UCA0CLK BIS.B #BIT4,&P3DIR ;P3.4 BIS.B #UCSSEL0,&UCA0CTL1 ; 32768 BIS.B #UCMST+UCSYNC+UCCKPL+UCMSB,&UCA0CTL0;spi,spi,, MOV.B #00h,&UCA0BR1 ;32768/1200=27.3 MOV.B #27,&UCA0BR0 MOV.B #00h,&UCA0MCTL BIC.B #UCSWRST,&UCA0CTL1 ; SPI BIS.B #UCA0RXIE,&IE2 ; spi EINT ; MOV.B R8,&UCA0TXBUF ; mainloop BIS.B #LPM3,SR ; 3 NOP rx_isr; MOV.B &UCA0RXBUF,0(R6) ; R6 ram I NC.W R6 ;ram 1 CMP.W #MEMPTR+256,R6 ; 256 JNZ wait_txifg MOV.W #MEMPTR,R6 ; ram NOP wait_txifg BIT.B #UCA0TXIFG,&IFG2 ; JZ wait_txifg INC.B R8 ; 1 MOV.B R8,&UCA0TXBUF ; XOR.B #BIT0,&P1OUT ;LED RETI ; END main NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x 46

;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main ORG 0FFEEh DC16 rx_isr RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL BIS.B #BIT0,&P1DIR ; LED BIS.B #BIT4+BIT5+BIT0,&P3SEL ;p3.4 SIMO,P3.5 SOMI,P3.0 UCA0CLK BIS.B #BIT5,&P3DIR ;P3.5 BIS.B #UCSYNC+UCCKPL+UCMSB,&UCA0CTL0 BIC.B #UCSWRST,&UCA0CTL1 ; spi BIS.B #UCA0RXIE,&IE2 ; EINT ; mainloop BIS.B #LPM3,SR ; 3 NOP rx_isr; wait_txifg BIT.B #UCA0TXIFG,&IFG2 ; JZ wait_txifg MOV.B &UCA0RXBUF,&UCA0TXBUF ; XOR.B #BIT0,&P1OUT ;led RETI END main USCI_B0 I2C 1 47

2 3 2274 \example_code\2274_asm\usci_operation\i2c_int_ma () 2274 \example_code\2274_asm\usci_operation\i2c_int_sa () NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main ORG 0FFECh DC16 i2c_tx_isr RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL MOV.B #00h,R8 ;R8 BIS.B #BIT0,&P1DIR ;LED BIS.B #BIT1+BIT2,&P3SEL ;p3.1 UCB0SDA,P3.2 UCB0SCL BIS.B #UCSSEL1,&UCB0CTL1 ; smclk MOV.B #00h,&UCB0BR1 ;SMCLK/11 MOV.B #11,&UCB0BR0 48

BIS.B #UCMST+UCSYNC+UCMODE1+UCMODE0,&UCB0CTL0; I2C MOV.W #88,&UCB0I2CSA ; 88 BIC.B #UCSWRST,&UCB0CTL1 ; I2C BIS.B #UCB0TXIE,&IE2 ; UCB0TX BIS.B #UCTR+UCTXSTT,&UCB0CTL1 ;, BIS.B #LPM0+GIE,SR ; 0 loop BIT.B #UCTXSTP,UCB0CTL1 ; JZ loop mainloop JMP mainloop i2c_tx_isr CMP.B #100,R8 ;100 JNZ next1 NOP ;,, BIS.B #UCTXSTP,&UCB0CTL1 ; stop BIC.B #UCB0TXIFG,&IFG2 ; BIC.B #LPM0,0(SP) ; 0 JMP end_i2c_tx_isr next1 MOV.B R8,&UCB0TXBUF ; INC.B R8 ; 1 end_i2c_tx_isr RETI ; END main MEMPTR EQU 0400h ; NAME main PUBLIC main ;----------------------------------------------------------------------------- ; MSP430F22x ;----------------------------------------------------------------------------- ORG 0FFFEh DC16 main ORG 0FFEEh DC16 i2c_stt_stp ORG 0FFECh DC16 i2c_rx_isr 49

RSEG CODE ; main MOV.W #0600H,SP ; stopwdt MOV.W #WDTPW+WDTHOLD,&WDTCTL ; MOV.B &CALBC1_1MHZ,&BCSCTL1 ; DCO 1MHZ MOV.B &CALDCO_1MHZ,&DCOCTL MOV.W #MEMPTR,R6 ; MEMPTR R6 BIS.B #BIT0,&P1DIR ;LED BIS.B #BIT1+BIT2,&P3SEL ;p3.1 UCB0SDA,P3.2 UCB0SCL MOV.B #UCSYNC+UCMODE_3,&UCB0CTL0;UCB0 I2C MOV.W #88,&UCB0I2COA ; 88 BIC.B #UCSWRST,&UCB0CTL1 ; I2C BIS.B #UCSTPIE+UCSTTIE,&UCB0I2CIE ; BIS.B #UCB0RXIE,&IE2 ; I2C BIS.B #LPM0+GIE,SR ; 0 NOP mainloop JMP mainloop i2c_rx_isr;ucb0i2c MOV.B &UCB0RXBUF,0(R6) ; R6 INC.W R6 RETI i2c_stt_stp;, BIT.B #UCSTPIFG,UCB0STAT ; JZ next1 BIC.B #LPM0,0(SP) ; next1 BIC.B #UCSTPIFG+UCSTTIFG,&UCB0STAT ; RETI END main 50

C I/O LED 2274 P1.0 LED LED P1.0 P1.0OUT=0,LED, LED ; 1 LED 2 32274 \example_code\2274_c\io_operation 51

2274 2274 XTAL1VLODCO MCLKSMCLK ACLK 12274DCO 2 Clock_def.h I/OClock_def.h DCO_FREQUENCY DCO 1MHZ8MHZ12MHZ 16MHZACLK_VLOCLK ACLK VLO 32768 SMCLK_LFC SMCLK ACLK DCO MCLK_XT2_OR_LFC MCLK ACLK DCO 1 22274 \example_code\2274_c\clock_ctl 52

53

FLASH FLASH 2274FLASH FLASH A FLASH VCC DATA SHEET 12xxFLASH (2274 32KB+256byte) (2) MEMORY 01000H FALSH ALOCK 4xx FLASH A A 54

1 22274 \example_code\2274_c\flash_rw 55

56

57

1 2 1 2 3 4 5 WDT 1 WDT WDTTMSEL=1 WDTSSEL WDTISx SOURCE/32768(WDTISx=00)SOURCE/8192(WDTISx=01) SOURCE/512(WDTISx=10)SOURCE/64(WDTISx=11) P1.0 LED 2 WDT WDTTMSEL=0 IFG1 WDTIFG PUC WDTIFG PUC WDTIFG WDT WDTIFG LED 1 22274 \example_code\2274_c\wdt_operation\wdt_timer int main( void ) { 58

WDTCTL=WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; //, ACLK, ACLK/32768(WDTISx=0) WDTCTL=WDTPW+WDTTMSEL+WDTSSEL+WDTCNTCL; P1OUT =BIT0; //LED P1DIR =BIT0; IE1 =WDTIE; // WDT _BIS_SR(GIE+LPM3_bits); // LPM3,ACLK(WDT ), return 0; } #pragma vector=wdt_vector interrupt void wdt_timer(void) { P1OUT ^=BIT0; } // //LED 1 22274 \example_code\2274_c\wdt_operation\wdt_wdt 59

60

16 Timer_A 1 A 2 A 3 A PWM 1 Timer_A 2 Timer_A 3 Timer_A 3 / 8 PWM 4 Timer_A 5 Timer_A 6 Time_A 1 A Timer_A CCR1 50000 SMCLK P1.0 LED 2 A Timer_A CCR2 ACLK CCR2 SMCLK R7 3 A PWM Timer_A SMCLK=32768*32, OUTMOD_7Rset/Set CCR0=512,CCR1=384,CCR2=128 PWM 512/ 32768*32TA1 384512-384=21TA2 12 P1.2P1.3 A 12274 \example_code\2274_c\ta_operation\ta_1 61

2 A 1 62

22274 \example_code\2274_c\ta_operation\ta_2 63

PWM 1 22274 \example_code\2274_c\ta_operation\ta_3 int main( void ) { WDTCTL=WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; TACTL=TASSEL1+TAR; //SMCLK, TAR CCR0=512; // PWM CCTL1 =OUTMOD_7; //CCR1 reset/set CCR1=384; //CCR1 PWM CCTL2 =OUTMOD_7; //CCR2 reset/set CCR2=128; //CCR2 PWM P1SEL =BIT2+BIT3; //TA1,TA2 P1DIR =BIT2+BIT3; TACTL =MC0; // A _BIS_SR(CPUOFF); return 0; } 64

ADC10 1ADC10 2ADC10 1 ADC10 2 ADC10 3 ADC10 4 ADC10 6 ADC10 5 ADC 1ADC10 ADC10 ADC10SC AD ADC10MEM, V(temp)=0.00355*TempC+0.986, ad_value AD temp_value, 2ADC10ADC10 TA.OUT1ADADC10MEMad_value[] AD ADC10 1 65

22274 \example_code\2274_c\adc10_operation\adc10_sch_st float ad_value; float temp_value; int main( void ) { WDTCTL=WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; ADC10CTL1=INCH_10; // 10, ADC10CTL0=REFON+SREF_1; // 1.5V, ADC10CTL0 =ADC10ON+ADC10SHT_3+ADC10IE; // ADC10, 64 ADC10CLK, ADC10 ADC10CTL0 =ENC+ADC10SC; // AD _BIS_SR(GIE+CPUOFF); // temp_value=((ad_value*1.5/1023)-0.986)/0.0035; // return 0; } #pragma vector = ADC10_VECTOR //ADC10 interrupt void adc_isr(void) { ad_value=adc10mem; // AD ad_value _BIC_SR_IRQ(CPUOFF); // 0 } ADC10 1 66

22274 \example_code\2274_c\adc10_operation\adc10_sch_rt volatile unsigned int ad_value[10]; int main( void ) { WDTCTL=WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; // AD 4, 10,AD TA.OUT1, ADC10CTL1=ADC10DIV_3+INCH_10+SHS_1+CONSEQ_2; // 1.5V,,AD,, AD ( AD ) ADC10CTL0=SREF_1+ADC10SHT_3+ADC10IE+REFON+ADC10ON; TACCR0=30; // TACCTL0 =CCIE; //CCR0 TACTL=TACLR+MC_1+TASSEL_2; //TA, smclk _BIS_SR(LPM0_bits+GIE); // 0,, TACCTL0 &=~CCIE; //CCR0 _BIC_SR(GIE); // ADC10CTL0 =ENC; //AD TACCTL1=OUTMOD_4; //CCR1 4, TAR=0, TACTL =TASSEL_2+MC_2; //TA,smclk _BIS_SR(LPM0_bits+GIE); // 0,, 10AD _NOP(); return 0; } #pragma vector = TIMERA0_VECTOR interrupt void ta0_isr(void) { TACTL=0; _BIC_SR_IRQ(LPM0_bits); } //TA0, // TA // #pragma vector = ADC10_VECTOR interrupt void adc_isr(void) { static char i=0; ad_value[i]=adc10mem; i++; if(i==10) _BIC_SR_IRQ(LPM0_bits+GIE); } //ADC10 // AD // 10 AD // 1ADC10, 67

2ADC10 LSD SCIENCE & TECHNOLOGY CO., LTD. WWW.LIERDA..COM 3 68

OA 1OA 2 2OA 3 3OA 4 4OA 45 1 OA 2 OA 3 4 OA 1OA 2 OA0 2(unity gain)p2.0 (0~AVCC )P2.1 ( AVCC) 2274 AVss OAFBR P2.0,, 2OA 3 OA0 3(comparator)P2.0 (0~Vcc) AVss OAFBR p2.0,, 3OA 4 OA0 4non_inverting)P2.0 ( )P2.1 ( AVCC) AVss 4OA 45 OA0 4, OA1 5,P2.0 OA0 () P2.3 OA1 ( AVCC) AVss, OA1 OA0 OAFBRx AD, OA 2 1 22274 \example_code\2274_c\oa_operation\oa_m2 int main( void ) { WDTCTL=WDTPW+WDTHOLD; // 69

BCSCTL1 =CALBC1_1MHZ; DCOCTL =CALBC1_1MHZ; P2SEL =BIT0+BIT1; P2OUT =BIT1; // DCO 1MHZ //P2.0,2.1 //p2.1,oa0 () OA0CTL0=OAP_0+OAPM_3+OAADC1; //OAP OA0I0, fast, A1,A3 A5 OA0CTL1=OAFBR_1+OAFC_2; //R2/R1=4R/16R, 4R //OA0CTL1=OAFBR_2+OAFC_2; //R2/R1=8R/8R, 8R //OA0CTL1=OAFBR_3+OAFC_2; //R2/R1=10R/6R, 10R //OA0CTL1=OAFBR_4+OAFC_2; //R2/R1=12R/4R, 12R //OA0CTL1=OAFBR_5+OAFC_2; //R2/R1=13R/3R, 13R //OA0CTL1=OAFBR_6+OAFC_2; //R2/R1=14R/2R, 14R //OA0CTL1=OAFBR_7+OAFC_2; //R2/R1=15R/1R, 15R _NOP(); _BIS_SR(LPM3_bits); // 3 _NOP(); return 0; } OA 3 1 22274 \example_code\2274_c\oa_operation\0a_m3 int main( void ) { WDTCTL=WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; P2SEL =BIT0+BIT1; P2OUT =BIT1; OA0CTL0=OAP_0+OAPM_3+OAADC1; //OAP OA0I0, fast, A1,A3 A5 OA0CTL1=OAFBR_1+OAFC_3; // 4/16AVcc; //OA0CTL1=OAFBR_2+OAFC_3; // 8/16AVcc; //OA0CTL1=OAFBR_3+OAFC_3; // 10/16AVcc; //OA0CTL1=OAFBR_4+OAFC_3; // 12/16AVcc; 70

} //OA0CTL1=OAFBR_5+OAFC_3; // 13/16AVcc; //OA0CTL1=OAFBR_6+OAFC_3; // 14/16AVcc; //OA0CTL1=OAFBR_7+OAFC_3; // 16/16AVcc; _NOP(); _BIS_SR(LPM3_bits); // 3 _NOP(); return 0; OA 4 1 22274 \example_code\2274_c\oa_operation\oa_m4 int main( void ) { WDTCTL=WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; P2SEL =BIT0+BIT1; //P2.0,2.1 P2OUT =BIT1; //p2.1,oa0 () OA0CTL0=OAP_0+OAPM_3+OAADC1; //OAP OA0I0, fast, A1,A3 A5 OA0CTL1=OAFBR_0+OAFC_4; //R2/R1=0R/16R, 4(, =1+R2/R1) OA0CTL1=OAFBR_1+OAFC_4; //R2/R1=4R/12R OA0CTL1=OAFBR_2+OAFC_4; //R2/R1=8R/8R OA0CTL1=OAFBR_3+OAFC_4; //R2/R1=10R/6R OA0CTL1=OAFBR_4+OAFC_4; //R2/R1=12R/4R OA0CTL1=OAFBR_5+OAFC_4; //R2/R1=13R/3R OA0CTL1=OAFBR_6+OAFC_4; //R2/R1=14R/2R OA0CTL1=OAFBR_7+OAFC_4; //R2/R1=15R/1R _NOP(); _BIS_SR(LPM3_bits); // 3 _NOP(); return 0; } 71

OA 45 1 2 3 42274 \example_code\2274_c\oa_operation\oa_m5 volatile unsigned int adc_value; int main( void ) { 72

WDTCTL=WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; P2SEL =BIT0+BIT1+BIT3+BIT4; //P2.0,2.1,2,3 OA0I0 P2OUT =BIT3; //p2.3,oa1 () // OA0 4 OA0CTL0=OAP_0+OAPM_3; //OAP OA0I0, fast,oa0out OA0CTL1=OAFBR_2+OAFC_4; // 4, 1+8R/8R // OA1 5 OA1CTL0=OAP_3+OAPM_3+OAADC1; // OA0, fast, A3 OA1CTL1=OAFBR_2+OAFC_5; // 5, 1+8R/8R // OA1 AD ADC10CTL1=INCH_3; // 3 ADC10CTL0=REFON+SREF_1+REF2_5V; // 2.5V, ADC10CTL0 =ADC10ON+ADC10SHT_3+ADC10IE; // ADC10, 64 ADC10CLK, ADC10 ADC10CTL0 =ENC+ADC10SC; // AD _BIS_SR(GIE); // _NOP(); return 0; } #pragma vector=adc10_vector interrupt void adc_isr(void) { adc_value=adc10mem; _NOP(); } // AD adc_value 73

USCI 1USCI_A0 UART 2USCI_A0 SPI 3USCI_B0 I2C 1 USCI 2 USCI 3 UART 4 SPI 3 4 5 I2C 6 1USCI_A0 UART USCI_A0 2274 UCLISTEN 00FF 0400 RAM _NOP() RAM 2USCI_A0 SPI USCI_A0 400 RAM PC 00FF 400H500H RAM 3USCI_B0 I2C USCI_B0 I2C 2274 PC 88 099 88 400H RAM USCI_A0 UART 1 74

2 32274 \example_code\2274_c\usci_operation\usci_duplex_1200 no_init char send_data[256] @ 0x0400; // 0x0400 int main( void ) { WDTCTL =WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; volatile unsigned int n; do // { IFG1 &=~OFIFG; for(n=5000;n>0;n--); } while(ofifg&ifg1); 75

} P1DIR =BIT0; // LED P1OUT =BIT0; P3SEL =BIT4+BIT5; //p3.4 TX,P3.5 RX P3DIR =BIT4; //P3.4 //UCA0STAT =UCLISTEN; // UCA0CTL1 =UCSSEL0; // 32768 UCA0BR1=0; // 32768/1200=27.3 UCA0BR0=27; UCA0MCTL =UCBRS1; //UCBRSx=INT(0.3*8)=2 UCA0CTL1 &=~UCSWRST; // USCI IE2 =UCA0RXIE+UCA0TXIE; // _BIS_SR(LPM3_bits+GIE); // 3 _NOP(); return 0; #pragma vector =USCIAB0RX_VECTOR interrupt void rx_isr(void) { static char i=0; P1OUT ^=BIT0; send_data[i]=uca0rxbuf; if(i==255) { i=0; } else { i++; } } //, LED // 0x0400 RAM // 256 // 256, 0x0400 #pragma vector =USCIAB0TX_VECTOR interrupt void tx_isr(void) { static char j=0; P1OUT ^=BIT0; //, LED unsigned int x; for(x=0;x<15000;x--); //, UCA0TXBUF=j; // j++; } USCI_A0 SPI 1 76

2 3 2274 \example_code\2274_c\usci_operation\usci_spi_tx 2274 \example_code\2274_c\usci_operation\usci_spi_rx no_init char rec_data[256] @ 0x0400; char send_data=1; int main( void ) { unsigned int n; WDTCTL=WDTPW+WDTHOLD; BCSCTL1 =CALBC1_1MHZ; DCOCTL =CALBC1_1MHZ; // // DCO 1MHZ 77

do{ // IFG1 &=~OFIFG; for(n=5000;n>0;n--); }while(ofifg&ifg1); P1DIR =BIT0; //LED P3SEL =BIT0+BIT4+BIT5; //p3.4 TX,P3.5 RX,P3.0 UCA0CLK P3DIR =BIT4; //P3.4 UCA0CTL1 =UCSSEL0; // 32768 UCA0CTL0 =UCMST+UCSYNC+UCCKPL+UCMSB; //spi,spi,, UCA0BR1=0; //32768/1200=27.3 UCA0BR0=27; UCA0MCTL=0; UCA0CTL1 &=~UCSWRST; // SPI IE2 = UCA0RXIE; // spi _BIS_SR(GIE); // UCA0TXBUF=send_data; //, _BIS_SR(LPM3_bits); // 3 return 0; } #pragma vector=usciab0rx_vector interrupt void rx_isr(void) { static unsigned int i=0; rec_data[i]=uca0rxbuf; i++; if(i==256) { i=0; } while(!(uca0txifg&ifg2)); send_data++; UCA0TXBUF=send_data; P1OUT ^=BIT0; } int main( void ) { WDTCTL=WDTPW+WDTHOLD; BCSCTL1 =CALBC1_1MHZ; DCOCTL =CALBC1_1MHZ; P1DIR =BIT0; P3SEL =BIT4+BIT5+BIT0; // 0x0400 ram // 256, // // 1 //LED // // DCO 1MHZ // LED //p3.4 SIMO,P3.5 SOMI,P3.0 UCA0CLK 78

P3DIR =BIT5; //P3.5 UCA0CTL0 =UCSYNC+UCCKPL+UCMSB; //spi,, UCA0CTL1 &=~UCSWRST; // spi IE2 =UCA0RXIE; // _BIS_SR(GIE+LPM3_bits); // 3 return 0; } #pragma vector=usciab0rx_vector //spi interrupt void rx_isr(void) { while(!(uca0txifg&ifg2)); // UCA0TXBUF=UCA0RXBUF; // P1OUT ^=BIT0; //led } USCI_B0 I2C 1 2 79

3 2274 \example_code\2274_c\usci_operation\i2c_int_ma () 2274 \example_code\2274_c\usci_operation\i2c_int_sa () char send_data=0; int main( void ) { WDTCTL=WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; P1DIR =BIT0; //LED P3SEL =BIT1+BIT2; //p3.1 UCB0SDA,P3.2 UCB0SCL UCB0CTL1 =UCSSEL1; // smclk UCB0BR1=0; //SMCLK/11 UCB0BR0=11; UCB0CTL0 =UCMST+UCSYNC+UCMODE1+UCMODE0; // I2C UCB0I2CSA=88; // 88 UCB0CTL1 &=~UCSWRST; // I2C IE2 =UCB0TXIE; // UCB0TX UCB0CTL1 =UCTR+UCTXSTT; //, _BIS_SR(CPUOFF + GIE); // 0 while(uctxstp&ucb0ctl1); // _NOP(); for(;;); return 0; } #pragma vector = USCIAB0TX_VECTOR // interrupt void i2c_tx_isr(void) { if(send_data!=100) // 100? { UCB0TXBUF=send_data; send_data++; } else //100 { UCB0CTL1 =UCTXSTP; // IFG2 &=~UCB0TXIFG; // _BIC_SR_IRQ(LPM0_bits); // } } no_init char data_ptr[100] @ 0x0400;// 0x0400 int main( void ) 80

{ } WDTCTL=WDTPW+WDTHOLD; // BCSCTL1 =CALBC1_1MHZ; // DCO 1MHZ DCOCTL =CALBC1_1MHZ; P1DIR =BIT0; //led P3SEL =BIT1+BIT2; //p3.1 UCB0SDA,P3.2 UCB0SCL UCB0CTL0=UCSYNC+UCMODE_3; //UCB0 I2C UCB0I2COA=88; // 88 UCB0CTL1 &=~UCSWRST; // I2C UCB0I2CIE =UCSTPIE+UCSTTIE; // IE2 =UCB0RXIE; // I2C _BIS_SR(CPUOFF + GIE); // 0 _NOP(); / while(1); return 0; #pragma vector = USCIAB0TX_VECTOR interrupt void i2c_rx_isr(void) { static char i=0; data_ptr[i]=ucb0rxbuf; i++; } // // 0x0400 RAM #pragma vector = USCIAB0RX_VECTOR //, interrupt void i2c_stt_stp(void) { if(ucstpifg&ucb0stat) { _BIC_SR_IRQ(LPM0_bits); // } UCB0STAT &=~(UCSTPIFG+UCSTTIFG); //, } 81