温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
单片机
应用
实例
p1口八个灯作跑马灯。
org 0000h
ajmp start
org 0030h
start:
mov a,#0ffh ;
clr c ;
mov r2,#08h ;循环八次。
loop: rlc a ;带进位左移。
mov p1,a ;输出到P1口。
call delay ;延时一段时间
djnz r2,loop ;反复循环
mov r2,#07h ;再往回循环。
loop1: rrc a ;带进位右移
mov p1,a ;输出到P1口。
call delay ;延时一段时间
djnz r2,loop1 ;反复循环
jmp start ;重新开始
delay: mov r3,#20 ;延时子程序
d1: mov r4,#20
d2: mov r5,#248
djnz r5,$
djnz r4,d2
中断控制的P1.1小灯。
org 0000h
ajmp main
org 000bh
ajmp int_timer0
org 0030h
main: mov tmod,#01h ;设置定时器工作方式寄存器。
mov th0,#high(65536-50000) ;
mov tl0,#low(65536-50000) ;设50MS初始值。
mov ie,#82h ;设置中断允许寄存器
mov 30h,#10 ;
mov 31h,#6 ;30H和31H是两个软件计数器。
setb tr0 ;启动定时
ajmp $ ;原地踏步
int_timer0: ;定时器0中断服务程序。
mov th0,#high(65536-50000) ;
mov tl0,#low(65536-50000) ;重设50MS定时。
djnz 30h,l1 ;
mov 30h,#10 ;
djnz 31h,l1 ;
mov 31h,#6 ;软件计数
cpl p1.1 ;10*6*50MS=3000MS时间到,P1.1取反
l1: reti ;中断返回
end
一位计数器,按p3.2数码管加1,到9后回0
loop:mov 30h,#0ffh ;30h送ff即-1
main:INC 30H
mov a,30h
setb p3.2 ;把键盘口送高电平
mm: jnb p3.2,tt ;如果p3.2按下则执行tt
ljmp mm ;如果没有按下则反复监测键盘
tt: MOV DPTR,#TAB
MOVC A,@A+DPTR
CLR P2.6 ;开数码管
MOV P0,A ;送显示
lcall delay ;延时一段时间
cjne a,#60h,main ;如果是最后一个数据重新开始
ljmp loop ; 否则30H 清除
ret
TAB: DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H
DELAY: ; 延时程序
MOV R7,#255
D1:MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET
end