文章目录
前言
本章主要介绍打开一个led,具体采用51汇编
1.打开IDE
选择STC89C52RC
后缀是.asm
2.设置编辑器
3.设置输出
4. 原理图
5.编写代码
cpp
ORG 00H;伪代码,程序起始位置
MOV A,#11111110B ;存入显示灯的位置数据为累加器A
MOV P1,A
JMP $ ;程序在这里停止
END
其中#11111110可以写为0FEH,不要忘了前面的0
上面可以不用A,直接可以负值,因为P1是片内ram,所以不需要A,如果是片外ram,就需要A
c
ORG 00H
MOV P1,#11111110B ;存入显示灯的位置数据为累加器A
JMP $ ;程序在这里停止
END
c
ORG
CLR P1.7 ;清除1bit
JMP $ ;程序在这里停止
END
6 编译
7.下载
8.其它代码
1.LED闪烁
c
ORG 00H
START:
CLR P1.0
CALL DELAY
SETB P1.0
CALL DELAY
JMP START
DELAY:MOV R5, #25
D1:MOV R6,#100
D2:MOV R7,#100
DJNZ R7, $ ;$表示继续执行这一句
DJNZ R6,D2
DJNZ R5,D1
RET
END
延时1s
`
2.跑马灯
从P1.0开始,循环依次点亮
c
ORG 00H
START:
MOV R0,#7
MOV A, #0FEH
LOOP:MOV P1,A
CALL DELAY
RL A ;左移一位
DJNZ R0, LOOP
DELAY:
MOV R5, #50
D1:
MOV R6, #100
D2:
MOV R7, #100
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
加强版
c
ORG 00H
START:
MOV R0,#7
MOV A, #0FEH
LOOP:MOV P1,A
CALL DELAY
RL A ;左移一位
DJNZ R0, LOOP
MOV R1 , #3
MOV A,#00H
LOOP1:
MOV P1, A
CALL DELAY
CPL A;
DJNZ R1,LOOP1
JMP START
DELAY:
MOV R5, #50
D1:
MOV R6, #100
D2:
MOV R7, #100
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END