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 ;结束