?? main.s
字號:
;******************************************************************************
; 文 件 名:main.S
; 功 能:向串口發送數據。
; 說 明:使用外部11.0592MHz晶振,系統時鐘配置后Fpclk=11.0592MHz;
; 通訊波特率115200,8位數據位,1位停止位,無奇偶校驗。
;******************************************************************************
INCLUDE LPC2294.INC
EXPORT MAIN
FPCLK EQU 11059200 ; 定義FPclk
ART_BPS EQU 115200 ; 定義波特率
AREA SENDSTRC,CODE,READONLY
ENTRY
MAIN LDR SP,=0x40003F00 ; 設置堆棧指出針
LDR R0,=PINSEL0 ; 設置IO口使用為UART0
MOV R1,#0x05
STR R1,[R0]
; 設置系統時鐘
LDR R0,=VPBDIV
MOV R1,#0x00
STR R1,[R0] ; VPBDIV=0x00
LDR R0,=PLLCFG
MOV R1,#0x23
STR R1,[R0] ; PLLCFG=0x23,設置M值為4,P值為2
LDR R0,=PLLCON
MOV R1,#0x01
STR R1,[R0] ; PLLCON=0x01
LDR R0,=PLLFEED
MOV R1,#0xAA
STR R1,[R0] ; PLLFEED=0xAA
MOV R1,#0x55
STR R1,[R0] ; PLLFEED=0x55
WAIT_OK LDR R0,=PLLSTAT
LDR R1,[R0]
ANDS R1,R1,#0x0400
BEQ WAIT_OK ; 等待PLL鎖定
LDR R0,=PLLCON
MOV R1,#0x03
STR R1,[R0]
LDR R0,=PLLFEED
MOV R1,#0xAA
STR R1,[R0]
MOV R1,#0x55
STR R1,[R0]
BL UART0_INI ; 初始化串口UART0,設置波特率
LOOP LDR R3,=HELLO
BL UART0_SENDSTR ; 發送字串,字串中以0x00結束
BL DELAYS ; 軟件延時
B LOOP
;******************************************************************************
; 名 稱:DELAYS
; 功 能:軟件延時
; 入口參數:無
; 出口參數:無
; 占用資源:R7
;******************************************************************************
DELAYS
MOV R7,#0x0000FF00 ; 延時參數
DELAYS_L1 SUBS R7,R7,#1 ; R7 = R7-1
BNE DELAYS_L1 ; 判斷R7-1結果是否為0,若不為0則跳轉
MOV PC,LR ; 返回
;******************************************************************************
; 名 稱:UART0_INI
; 功 能:初始化串口0。設置為8位數據位,1位停止位,無奇偶校驗,波特率為9600
; 入口參數:無
; 出口參數:無
; 占用資源:R0、R1
;******************************************************************************
UART0_INI
LDR R0,=U0LCR ; 設置UART工作模式
MOV R1,#0x83 ; DLAB = 1,可設置波特率
STR R1,[R0]
LDR R0,=U0DLL ; 設置波特率
MOV R1,#(FPCLK/16/ART_BPS):MOD:256
STR R1,[R0]
LDR R0,=U0DLM
MOV R1,#(FPCLK/16/ART_BPS)/256
STR R1,[R0]
LDR R0,=U0LCR
MOV R1,#0x03
STR R1,[R0] ; 8位數據位,1位停止位,無奇偶校驗,DLAB = 0
MOV PC,LR ; 返回
;******************************************************************************
; 名 稱:UART0_SENDB
; 功 能:串口發送字節數據。向UART0發送一字節數據,并等待發送完畢
; 入口參數:R1 要發送的數據,低8位有效
; 出口參數:無
; 占用資源:R0、R1
;******************************************************************************
UART0_SENDB
LDR R0,=U0THR
STR R1,[R0] ; 發送數據
LDR R0,=U0LSR ; 等待發送完畢
UART0SD_L1 LDR R1,[R0]
ANDS R1,R1,#0x40
BEQ UART0SD_L1
MOV PC,LR
;******************************************************************************
; 名 稱:UART0_SENDSTR
; 功 能:向UART0發送字符串。發送字串指針R3,字串中以0x00結束
; 入口參數:R3 要發送字串指針
; 出口參數:無
; 占用資源:R0、R1
;******************************************************************************
UART0_SENDSTR
STMFA SP!,{R0-R9, LR}
UART0SR_L1 LDR R1,[R3],#4
CMP R1,#0x00
BEQ UART0SR_L2 ; 若數據為0x00,返回
BL UART0_SENDB
B UART0SR_L1
UART0SR_L2 LDMFA SP!,{R0-R9, LR}
MOV PC,LR
LTORG ; 在此聲明文字池
HELLO DCD 'H', 'e','l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\r','\n',0x0
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -