80C51汇编。

SETB是汇编指令,意思是把其后面的那个寄存器的位置1。

 

SETB ET0 ;开定时/计数器0允许

SETB TR0 ;定时/计数器0开始运行TR0是单片机会响应定时/计数器0的启动位,为1,就启动定时/计数器0;为0,就停止定时/计数器0的运行。 

 

程序说明

 

SETB EA ; 允许单片机总中断  CLR EA ; 禁止单片机总中断

SETB ES ; 允许串口中断CLR ES ; 禁止串口中断

SETB ET1 ; 允许T1溢出中断  CLR ET1 ; 禁止T1溢出中断

SETB EX1 ; 允许外部中断  1CLR EX1 ; 禁止外部中断

1SETB ET0 ; 允许T0溢出中断  CLR ET0 ; 禁止T0溢出中断

SETB EX0 ; 允许外部中断  0CLR EX0 ; 禁止外部中断0

 

 

默认情况下,下面的程序将所有中断设置为低优先级中断。通过上面的按钮可以分别控制每一个中断的优先级,下面的程序会自动更新。

CLR PS

CLR PT1

CLR PX1

CLR PT0

CLR PX0

程序说明

SETB PS       ; 将串口中断设置为高级中断

CLR PS       ; 将串口中断设置低级中断

SETB PT1      ; 将T1设置为高级中断

CLR PT1      ; 将T1设置为低级中断

SETB PX1    ; 将外部中断1设置为高级中断

CLR PX1      ; 将外部中断1设置为低级中断

SETB PT0      ; 将T0设置为高级中断

CLR PT0        ; 将T0设置为低级中断

SETB PX0      ; 将外部中断0设置为高级中断

CLR PX0      ; 将外部中断0设置为低级中断

读例子程序。----》

ORG 0000H    ;主函数的入口地址
AJMP MAIN 
ORG 0003H    ;子程序的入口地址
AJMP INT 
MAIN: MOV SP,#6OH  ;指针指向地址为60H的存储单元
MOV P2,#00H        ;P2口清零
MOV P1,#00H        ;P1口清零
MOV P0,#00H        ;P0口清零
MOV A,,#01         ;立即数01放入寄存器A中
SETB IT0            ;标志位IT0=1
SETB EX0            ;标志位EX0=1
SETB EA             ;标志位EA=1

LOOP1: LCALL DY     ;长调用子程序DY
MOV P0,A           ;寄存器A中的数送到P0口
RL A                ;寄存器A中的数逻辑右移一位
SJMP LOOP1          ;短跳转至LOOP1处
ORG 0100H           ;子程序的入口地址为0100H
DY: MOV R6,#250    ;R6=250
DLP1: MOV R7,#250  ;R7=250
DLP2: DJN2 R7,DLP2 ;R7中的数自减1,若不等于0则跳转到DLP2,等于0往下
                    ;走
DJN2 R6,DLP1       ;R6中的数自减1,若不等于0则跳转到DLP1
RET                 ;由以上可以看出DY为延时子程序

ORG 0150H           ;子程序INT的入口地址为0150H
INT: CLR EA         ;标志位EA=0
PUSH ACC            ;ACC中的数据入栈
SETB RSO            ;RS0=0
MOV A,#1           ;A=1
MOV R7,#8          ;R7=8
LOOP2: MOV P1,A    ;P1=A
RL A                ;寄存器逻辑右移一位
DJNZ R7,LOOP2      ;R7自减1,不为0则跳到LOOP2,为0往下走
MOV P1,#00H        ;P1口清零
POP ACC             ;堆栈中的数据弹出至ACC(就是寄存器A)中
SETB EA             ;EA=1
RETI                ;子程序返回
END                 ;结束

 

 

你可能感兴趣的:(c,汇编,存储)