① 51單片機中,將讀得鍵盤的值保存到50H,60H中,單片機斷電後鍵盤值是不是就消失了該怎樣保存鍵盤值不失效
數據會丟失,用EEPROM存儲。比如AT24C01
=========================================
外接毀宴指,小容量的就用IIC匯流排,大容量的是SPI匯流排。
據我所知,AT的單片機沒有內置EEPROM的。
STC的有些單片機有,比如STC12C54系列,它有自己的讀寫指令纖配,具體可以去宏晶科技下載datasheet看,上面祥早有範例讀寫程序。
② 單片機,將內RAM30H-50H里的最小數找出來存到內RAM的6FH單元中。
;啟動入口
ORG 0000H ;復位罩森啟動
LJMP START ;
ORG 0100H ;主程序從0100H開始
;
;主控程序
START: MOV R0,#50H ;用R0間接定址
MOV X,#0FFH ;預先存入一個位元組所能裝下的最大值
LOOP: MOV A,@R0 ;取得好悶宏一個源數據
CLR C ;為做減法做准備
SUBB A,X ;源數據-X中數據
JNC NUM ;結果大於或等於轉移
MOV X,@R0 ;結果小於X中數據,替換
NUM: DEC R0 ;指向下一位元組
CJNE R0,#2FH,LOOP ;一直比較到30H
NEXT: JMP $ ;比較完畢,最小值在6FH中
;
X EQU 6FH ;定義變數友冊X,地址是6FH
END ;
③ 單片機編程,採用匯編語言的循環結構,找出從內部40H到49H單元中存放的最小的數,並把它放在內部RAM的50H單
ORG 0000H
MAIN:
MOV 50H, #0 ;先春拆用0充當最小值.
MOV R0, #40H ;起始地址.
LOOP: MOV A, @R0 ;取出一個數.
CLR C
SUBB A, 50H ;減去最小值.
JNC NEXT ;無借位(即夠減)轉移.
MOV 50H, @R0 ;否則就用這個數當最小值.
NEXT: INC R0 ;轉向下一個談森陸地含頃址.
CJNE R0, #4AH, LOOP;不到最後就轉到前面去循環比較.
SJMP $ ;暫停.
END ;完.
④ 單片機內RAM位元組地址50H中,可以存放多少位的二進制數字
一個位元組可以存放8位二進制數。
⑤ 單片機匯編語言怎樣實現將41H內的內容依次存入50H-70H中,使用INC指令應該怎麼用
用吵弊間接定址虧櫻,升空族循環存入
MOV R0,#50H
MOV A,41H
LOOP:
MOV @R0,A
INC R0
CJNE R0,#71H,LOOP
⑥ 如何將單片機片內 20H 到 50H 單元賦值
ORG 0000H
LJMP START
START:
MOV R6, #08;學號8號
MOV R5,#80H;作為遞增或遞減結果緩存,初始值80H
MOV R0,#20H;存儲空間的起始地址
MOV R4,#31H;存儲空間中共有31個單元
LOOP1:
MOV A,R5
;先把緩存寫入存儲單元
MOV @R0,A
INC R0
DJNZ R4,INC_INC;每次R4都先會減一,減一之後等於0就執行下一行,否則就跳轉
;賦值完成
SJMP SEARCH_AA
INC_INC:
MOV A,R5
ADD A,R6 ;遞增
CJNE A,#0BBH,NE_BB;與最大值BBH比較,相等就執行下一行指令,不相等就跳轉到NE_BB,同時若A的值大於或者等於BBH,則C=0,否則C=1。
;等於 bbh,直接寫入緩存
LESS_BB:;小於 bbh,也直接寫入緩存
MOV R5,A
SJMP LOOP1
NE_BB:
JC LESS_BB
;大於 bbh,要開始遞減
;MOV R5,#0BBH;從BB開始遞減
;SJMP DEC_DEC
DEC_DEC:
MOV A,R5
SUB A,R6;遞減
CJNE A,#80H,NE_80;與最小值80H比較,相等就執行下一行指令,不相等就跳轉到NE_80,同時若A的值大於或者等於80H,則C=0,否則C=1。
;等於 80h,直接寫入緩存
GREATER_80:;大於 80h,也直接寫入緩存
MOV R5,A
MOV @R0,A
INC R0
DJNZ R4,DEC_DEC;每次R4都先會減一,減一之後等於0就執行下一行,否則就跳轉
;賦值完成
SJMP SEARCH_AA
NE_80:
JNC GREATER_80
;MOV R5,#80H;從80開始遞增
SJMP INC_INC
SEARCH_AA:
MOV R0,#20H;存儲空間的起始地址
MOV R4,#31H;存儲空間中共有31個單元
MOV 51H,#00;先清零
SEARCH_NEXT:
MOV A, @R0
CJNE A,#0AAH,NE_AA;
;有 AAH 這一數據
MOV 51H,#01
SJMP ENDEND
NE_AA:
DJNZ R4,SEARCH_NEXT
SJMP ENDEND
ENDEND:
END
⑦ 單片機找出最小數
;
MOV 41H, #255 ;先用最大的氏笑耐數字,當做最小值
MOV R0, #50H
MOV R2, #16
LOOP:
MOV A, @R0 ;取來一個數
CJNE A, 41H, L1 ;「減」最小值升拿
L1: JNC L2 ;夠減就轉移
MOV 41H, @R0 ;否則殲春就更新最小值
L2: INC R0
DJNZ R2, LOOP
END
⑧ 50H是什麼意思單片機
50H在單片機中是十六進制數,也就是十進制數80.意思可能是:
1、數值50H
2、內部寄存器50H
3、外部存儲器50H(RAM或ROM)
4、擴展數據口地址50H