|
[color=#ff0000,strength=3)"]單片機(jī)編程是硬件編程:
1. 編寫底層驅(qū)動(dòng)
2. 根據(jù)電路原理圖來實(shí)現(xiàn)
&附電路原理圖:



[color=#ff0000,strength=3)"]

&硬件實(shí)物圖:

[color=#ff0000,strength=3)"]實(shí)現(xiàn)的功能演示:
1. 8個(gè)LED小燈的正向與反向流水演示
C代碼源程序:
# include <reg51.h>
typedef unsigned char uint8; //宏定義
typedef unsigned int uint16;
sbit ENLED = P1^4; //位聲明
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
main()
{
uint8 j = 0;
uint16 i;
ENLED = 0;
ADDR0 = 0; ADDR1 = 1; ADDR2 = 1; ADDR3 = 1;
while (1)
{
P0 = ~(1 << j++);//00000001 按位取反后為11111110
//非精確延時(shí)
for(i = 0; i < 20000; i++); //分號不能少
while (8 == j)
{
j = 0;
}
}
}
匯編代碼源程序:
ORG 00H
MOV DPTR,#TABLE
MAIN:
MOV P1,#11101110B ;38譯碼器對三極管的開關(guān)控制,使LED燈能正常工作
MOV R2,#0
START:
MOV A,R2
MOVC A,@A+DPTR ;MOVC A,@A+DPTR 寫成 MOVC A,@DPTR+A 是錯(cuò)誤的
MOV P0,A
LCALL DELAY100MS
INC R2
CJNE R2,#13,START
SJMP MAIN
TABLE:DB 0FEH, 0FDH, 0FBH, 0F7H, 0EFH, 0DFH, 0BFH, 7FH, 0BFH, 0DFH, 0EFH, 0F7H, 0FBH, 0FDH
DELAY100MS: ;@11.0592MHz
PUSH 30H
PUSH 31H
MOV 30H,#180
MOV 31H,#68
NEXT:
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 31H
POP 30H
RET
END
|
|