51单片机简单程序汇集
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流水灯程序
;使用杜邦线连接P1与LED端口J9
ORG 00H
START:MOV A,#0FFH ;赋初值
CLR C
MOV R2,#8
LOOP1:RRC A ; 带进位右移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP1
MOV R2,#7
LOOP2:RLC A ; 带进位左移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP2
JMP START
DELAY:MOV R3,#20 ; 延时0.2秒
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END
查表法流水灯
;使用杜邦线连接P1与LED端口J9
ORG 00H
START: MOV DPTR,#TABLE ; 将表的地址存入数据指针LOOP: CLR A
MOVC A,@A+DPTR ;到数据指针所指的地址取码
CJNE A,#01,LOOP1 ; 取出的码是否01H?否则跳到LOOP1
JMP START
LOOP1: MOV P1,A ;取出的值输出到P1端口
MOV R3,#20 ;用于改变延时长度
CALL DELAY
INC DPTR
JMP LOOP
DELAY: MOV R4,#20
D1: MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
DJNZ R3,DELAY
RET
TABLE: DB 0FEH,0FDH,0FBH,0F7H ;左移
DB 0EFH,0DFH,0BFH,7FH
DB 0FEH,0FDH,0FBH,0F7H ;左移
DB 0EFH,0DFH,0BFH,7FH
DB 7FH,0BFH,0DFH,0EFH ;右移
DB 0F7H,0FBH,0FDH,0FEH
DB 7FH,0BFH,0DFH,0EFH ;右移
DB 0F7H,0FBH,0FDH,0FEH
DB 00H,0FFH,00H,0FFH ;闪烁
DB 01H ;结束码
END
动态扫描两位数码管;利用中断的99秒计时器,动态扫描两位数码管
;P0口接J3,数据端口
;P2.2接J2 B端子,表示段码锁存
;P2.3接J2 A端子,标志位码锁存
LATCH1 BIT P2.2
LATCH2 BIT P2.3
ORG 00H
JMP START
ORG 0BH
JMP TIM0
START:MOV R3,#00 ;中断循环次数
MOV R4,#0 ;时间初值
MOV DPTR,#TABLE
MOV SP,#40H
MOV TMOD,#01H ;定时器工作方式
MOV TH0,#HIGH(65536-3800)
MOV TL0,#LOW(65536-3800) ;初值4MS
SETB TR0
MOV IE,#82H ;开中断
TIM0:
MOV TH0,#HIGH(65536-3800)
MOV TL0,#LOW(65536-3800)
INC R3
CJNE R3,#250,X1 ;1S
MOV R3,#0
MOV A,R4 ;十进制转换
MOV B,#10
DIV AB
MOV 20H,B ; 个位
MOV 21H,A ; 十位
INC R4
CJNE R4,#100,LEDSCAN ;到100则清零
MOV R4,#0
LEDSCAN: CALL SCAN ;调用数码管扫描
X1: PUSH ACC
PUSH PSW
CALL SCAN
POP PSW
POP ACC
RETI
SCAN:
MOV A,21H
MOVC A,@A+DPTR
MOV P0,A
SETB LATCH1
CLR LATCH1
MOV P0,#11111110B ;扫描子程序
SETB LATCH2
CLR LATCH2
CALL DELAY1
MOV A,20H
MOVC A,@A+DPTR
MOV P0,A
SETB LATCH1
CLR LATCH1
MOV P0,#11111101B ;0代表选通该位数码管
SETB LATCH2
CLR LATCH2
CALL DELAY1
RET
DELAY:MOV R5,#50 ;典型延时程序
D1: MOV R6,#40
D2: MOV R7,#248
CALL SCAN
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
DELAY1:MOV R6,#4 ;扫描延时
D3: MOV R7,#248
DJNZ R7,$
DJNZ R6,D3
RET
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴字码表END
倒计时演示1
;P0口接J3,数据端口
;P2.2接J2 B端子,表示段码锁存
;P2.3接J2 A端子,标志位码锁存
; 这是一个9999 4位数倒计时,为了方便观察,定时时间稍短。
LD1 BIT P2.7
LD2 BIT P2.6
LD3 BIT P2.5
LD4 BIT P2.4
LED1 BIT P2.3
LED2 BIT P2.2
LED3 BIT P2.1
LED4 BIT P2.0
BEEP BIT P3.6
LATCH1 BIT P2.2
LATCH2 BIT P2.3
SUB BIT 01H ;减位标志位
BUF_LED1 EQU 24H ;LED1缓存
BUF_LED2 EQU 25H ;LED2缓存
BUF_LED3 EQU 26H ;LED3缓存
BUF_LED4 EQU 27H ;LED4缓存
BIN_LED1 EQU 28H
BIN_LED2 EQU 29H
BIN_LED3 EQU 2AH
BIN_LED4 EQU 2BH