PLC TM卡開發系統匯編程序(ATM8051)
;***************** 定義管腳*************************SCL BIT P1.0SDA BIT P1.1GC BIT P1.2BZ BIT P3.6LEDI BIT P1.4LEDII BIT P1.5OK BIT 20H.1OUT1 BIT P1.3OUT2 BIT P1.0OUT3 BIT P1.1RXD BIT P3.0TXD BIT P3.1PCV BIT P3.2WPC BIT P3.3RPC BIT P3.5LEDR BIT P3.4LEDL BIT P3.6TM BIT P3.7;********************定義寄存器***********************ROMDTA EQU 30H;NUMBY EQU 61H;SLA EQU 60H;MTD EQU 2FH;MRD EQU 40H;TEMP EQU 50H;;ORG 00H;;INDEX:MOV P1, #00H;MOV P2, #0FFHMOV MTD ,#00HCALL REEMOV R0,40HCJNE R0,#01,NO;MOV P2,#1CHLJMP VIMEN MOV P2,#79HACALL TOUCHRESET ;JNC NO ;CALL READTM ;CJNE A,#01H,NO;NOPMOV MTD, #00HCALL WEENOPMOV P2,#4AHSETB BZCALL TIMECLR BZMOV PCON, #0FFHVIME:CALL TIME1CALL TOUCHRESETJNC VIMECALL READTMCJNE A, #01H,VIME;NOPNOPNOPIII: MOV MTD,#00HCALL REECALL BBJNB OK,NO1LJMP ZHUNO1:MOV MTD,#10H
標簽:
8051
PLC
ATM
TM卡
上傳時間:
2014-03-24
上傳用戶:448949
第1 章 體系結構 ARM經典300問與答第1 問:Q:請問在初始化CPU 堆棧的時候一開始在執行mov r0, LR 這句指令時處理器是什么模式A:復位后的模式,即管理模式.第2 問:Q:請教:MOV 中的8 位圖立即數,是怎么一回事 0xF0000001 是怎么來的A:是循環右移,就是一個0—255 之間的數左移或右移偶數位的來的,也就是這個數除以4一直除, 直到在0-255 的范圍內它是整數就說明是可以的!A:8 位數(0-255)循環左移或循環右移偶數位得到的,F0000001 既是0x1F 循環右移4 位,符合規范,所以是正確的.這樣做是因為指令長度的限制,不可能把32 位立即數放在32 位的指令中.移位偶數也是這個原因.可以看一看ARM 體系結構(ADS 自帶的英文文檔)的相關部分.第3 問:Q:請教:《ARM 微控制器基礎與實戰》2.2.1 節關于第2 個操作數的描述中有這么一段:#inmed_8r 常數表達式.該常數必須對應8 位位圖,即常熟是由一個8 位的常數循環移位偶數位得到.合法常量:0x3FC,0,0xF0000000,200,0xF0000001.非法常量:0x1FE,511,0xFFFF,0x1010,0xF0000010.常數表達式應用舉例:......LDR R0,[R1],#-4 ;讀取 R1 地址上的存儲器單元內容,且 R1 = R1-4針對這一段,我的疑問:1. 即常數是由一個8 位的常數循環移位偶數位得到,這句話如何理解2. 該常數必須對應8 位位圖,既然是8 位位圖,那么取值為0-255,怎么0x3FC 這種超出255 的數是合法常量呢3. 所舉例子中,合法常量和非法常量是怎么區分的 如0x3FC 合法,而0x1FE 卻非法0xF0000000,0xF0000001 都合法,而0xF0000010 又變成了非法4. 對于匯編語句 LDR R0,[R1],#-4,是先將R1 的值減4 結果存入R1,然后讀取R1 所指單元的 值到R0,還是先讀取R1 到R0,然后再將R1 減4 結果存入R1A:提示,任何常數都可用底數*2 的n 次冪 來表示.1. ARM 結構中,只有8bits 用來表示底數,因此底數必須是8 位位圖.2. 8 位位圖循環之后得到常數,并非只能是8 位.3. 0xF0000010 底數是9 位,不能表示.4. LDR R0, [R1], #-4 是后索引,即先讀,再減.可以看一看ARM 體系結構對相關尋址方式的說明.
標簽:
ARM
300
上傳時間:
2013-11-22
上傳用戶:1109003457