『壹』 簡單的單片機實驗題目!編了下,不知道對不對!麻煩指點!
本題目涉及到兩個片外地址。
傳統的單片機,只有一個片外數據指針DPTR,地址的處理就比較麻煩。
稍新一些的單片機,如AT89S52,就有兩個DPTR。
樓主的題目,像是學校裡面的作業,一般是不使用兩個DPTR的。
本題目,數據量很小,可以先全部倒到片內,再傳送到片外的目的地。
這樣便於大批數據的修改,但是,為了解決現在的小問題,程序未免嫌長。
還是在樓主的程序上,稍加修改。
程序如下:
;
MOV DPTR, #1000H ;第一塊地址
MOV R7, #10H ;第二塊地址
MOV R6, #10H ;此處修改了,原為00H
MOV R2, #8
LOOP:
MOVX A, @DPTR ;取第一地址內容
MOV B, A ;暫時存放
PUSH DPH
PUSH DPL
MOV DPH, R7
MOV DPL, R6 ;DPTR = 1010H
MOVX A,@DPTR ;取第二地址內容
XCH A, B
MOVX @DPTR, A ;交換存放
INC DPTR
MOV R7, DPH ;保存第二地址
MOV R6, DPL
POP DPL ;恢復第一地址
POP DPH
XCH A, B
MOVX @DPTR, A ;將首地址1010H的內容放到1000H
INC DPTR
DJNZ R2,LOOP
;完
『貳』 單片機實驗(proteus+keil)串列通信實驗
我給你
程序:
#include<reg51.h>
volatilechartemp;
volatilecharflag;
voidmain(void)
{
P3|=0x03;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
EA=1;
ES=1;
SM0=0;
SM1=1;
REN=1;
IP=0x00;
flag=0;
while(1)
{
while(flag==0);
flag=0;
TI=0;
SBUF=temp;
while(!TI);
}
}
voidSerialIsr(void)interrupt4
{
if(RI)
{
RI=0;
temp=SBUF;
flag=1;
}
}
『叄』 單片機匯編實驗
1將80C51片內RAM的20H~2EH共15個單元置以初值0A0H~0AEH,
mov r0,#20H
mov a,#0a0h
loop:
mov @r0,a
inc r0
inc a
cjne r0,#2fh,loop
然後再將8700H~870EH單元的內容傳送到片內RAM的60H~6EH中。
mov dptr,#8700h
mov r0,#60h
loop2:
movx a,@dptr
mov @r0,a
inc dptr
inc r0
mov a,dpl
cjne a,#0fh,loop2
最後將20H~2EH單元的內容傳送到片外RAM的8700H~870EH
mov dptr,#8700h
mov r0,#20h
loop3:
mov a,@r0
movx @dptr,a
inc dptr
inc r0
cjne r0,#2fh,loop3
end
2用P1口的p1.0-p1.7八個埠做輸出口,接8隻發光二極體(LED),編寫程序使LED循環點亮。
mov a,#1
loop:
rl a
mov p1,a
;delay
mov r1,#0ffh
loop2:mov r2,#0ffh
djnz r2,$
djnz r1,loop2
;delay end
sjmp loop
end
3題目: P1口接8隻發光二極體(L0~L7), T1作定時器,系統晶振6MHz。編寫程序,讓第1秒時L0~L3點亮, L4~L7暗;第2秒時L0~L3暗, L4~L7亮;第3秒時L0~L7全亮;第4秒時L0~L7全暗;第5秒時L0~L3點亮, L4~L7暗;如此循環下去......
;這個有點復雜了……
org 0h
sjmp start
org 0bh
mov th0,#0bh
mov tl0,#0dch
inc r7;R7是計數器,滿8次表示1秒到了
cjne r7,#8,exit
mov r7,#0
inc r6
cjne r6,#4,skip
mov r6,#0
skip:
mov a,r6
movc a,@a+dptr
mov p1,a
exit:reti
start:
mov tmod,#1
setb ea
setb et0
setb tr0
mov dptr,#tab
sjmp $
tab:db 0f0h,0fh,0h,0ffh
『肆』 單片機匯編編程實驗題求解,必採納
MOV 40H,#68H ;
MOV A,40H ;取壓縮BCD數。
ANL A,#0F0H ;屏蔽低4位,保留高4位。
SWAP A ;高低四位交換。
MOV 41H,A ;保存高4位。
MOV A,40H ;再取壓縮BCD數
ANL A,#0FH ;屏蔽高4位,保留低4位。
MOV 42H,A ;保存低4位。
『伍』 單片機實訓題目:8位邏輯電平模塊上的LED小燈呈現右側4盞先閃爍3次,左側4盞再閃爍3次,狀態間隔為2秒。
根據你的要求,我理解為,單片機控制8位邏輯輸入採集與8位LED輸出指示,那麼做模型的時候,用8路開關量輸入,8個LED燈做輸出,系統啟動的時候閃爍3次,間隔2秒,然後開始採集輸入信號,在對應的輸出端用LED顯示出來!
原理圖如下:
『陸』 單片機的簡單實驗編程題
循環3次即可。
MOV R0, #20H ;加數1地址、和的地址
MOV R1, #30H ;加數2地址
CLR C
MOV R2, #3 ;循環3次
A_LOOP:
MOV A, @R0 ;取
ADDC A, @R1 ;加
MOV @R0, A ;存
INC R0
INC R1
DJNZ R2, A_LOOP
CLR A
ADDC A, #0 ;得到進位
MOV 23H, A ;保存
RET