51单片机简单程序汇集

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档