;
ORG0000H
JMPMAIN
ORG000BH
JMPTC0S
ORG001BH
JMPTC1S
MAIN:
MOVTMOD,#61H
MOVTH1,#0F6H
MOVTL1,#0F6H
SETBTR1
SETBET1
SETBET0
SETBEA
CLRP1.7
SJMP$
;
TC1S:;收到了10個脈沖,發生T1計數中斷
MOVTH0,#3CH
MOVTL0,#0B0H
SETBTR0;令T0定時50ms
SETBP1.7
RETI
TC0S:;到了50ms
CLRP1.7
CLRTR0
RETI
END
⑵ 51單片機中如何用匯編語言編寫流水燈
流水燈就是51單片機控制led燈依次點亮的控制方式。具體程序如下:
ORG 0000H;復位啟動
AJMP START;
ORG 001BH;T1中斷
AJMP T1INT;
;定義變數========================
YSJSEQU 30H;延時計數器
LEDEQU 31H;LED控制緩沖器
;主程序==========================
START:MOV LED,#0FEH;初始化數據
MOV YSJS,#0;
MOV TMOD,#10H;定時器1工作於方式1,16位定時器
MOV TL1,#0B0H;設置定時初值
MOV TH1,#3CH;定時時間=50mS
SETB ET1;使能定時器1中斷
SETB TR1;啟動定時器1
SETB EA;開總中斷
MOV P1,LED;初始化流水燈
LOOP:JMP LOOP;循環等待中斷
T1INT:PUSH PSW;定時器1中斷程序
PUSH ACC;保護現場
MOV TH1,#3CH;定時時間=50mS
MOV TL1,#0B0H;
INC YSJS;
PUSH ACC;保護ACC
MOV A,YSJI;
CJNE A,#2,QT1;50mS*2=100mS
MOV P1,LED;
MOV A,LED;
RL A;累加器A的值循環左移1位
MOV LED,A;
MOV YSJS,#0;
QT1:POP ACC;恢復現場
POP PSW;
RETI;返回主程序
END;匯編程序結束
(2)51單片機匯編語言求助擴展閱讀:
實現流水燈的三個方法:
第一種,匯流排方法實現流水燈。這是一種比較笨但又最易理解的方法,採用順序程序結構,用位指令控制P1口的每一個位輸出高低電平,加上延時函數,即可控制每個LED燈的亮滅。
第二種,移位方法實現流水燈採用循環程序結構編程。首先在程序開始給P1.0口送一個低電平,其它位為高。然後延時一段時間再讓低電平往高位移動,這樣就實現「流水」的效果了。
第三種,庫函數實現流水燈。利用左移函數進行。
⑶ 51單片機編程題,用匯編語言怎麼做
在8051單片機的時鍾頻率為6MHz,那麼定時器的計數脈沖周期就是 2uS;
sbit CP=P1^0;
void Timer0_init()
{
TMOD |=0x01; //T0定時器,方式1,採用16位定時器
TH0 = (65536-500)/256; //定時器裝初值500, 即 1000uS 中斷一次
TL0 = (65536-500)%256;
EA=1; ET0=1; TR0=1;
}
void timer0() interrupt 1
{
TH0 = (65536-500)/256; //定時器裝初值500, 1mS 中斷一次
TL0 = (65536-500)%256;
CP=~CP; //改變脈沖信號的輸出狀態
}
void main()
{
Timer0_init();
CP=0;
while(1) { }
}
匯編語言,才看到,算了,你別人的回答吧