導航:首頁 > 編程語言 > 單片機小簡單程序

單片機小簡單程序

發布時間:2024-05-10 12:46:47

A. 51單片機流水燈程序

程序如下:

#include <reg52.h>

sbit led1 = P2^0;

sbit led2 = P2^1;

sbit led3 = P2^2;

sbit led4 = P2^3;

sbit led5 = P2^4;

sbit led6 = P2^5;

sbit led7 = P2^6;

sbit led8 = P2^7;


void main()

{

int i,j;

//點亮第一個燈

led1 = 1;

led2 = 0;

led3 = 0;

led4 = 0;

led5 = 0;

led6 = 0;

led7 = 0;

led8 = 0;

//延時1秒

for(i = 0;i < 110; ++i)

{

for(j = 0; j < 1000; ++j)

{

;//什麼也不做

}

}

//點亮第二個燈

led1 = 0;

led2 = 1;

led3 = 0;

led4 = 0;

led5 = 0;

led6 = 0;

led7 = 0;

led8 = 0;

//點亮剩餘的燈

//省略……

while(1);

}

(1)單片機小簡單程序擴展閱讀:

流水燈幾點說明:

void:因為該延時函數不需要返回值,所以寫為void

delay1s:該函數的函數名,命名需要符合C語言的標識符命名規則。

(): 不需要傳入參數,所以括弧中為空

至此我們可以把流水燈程序寫為以下形式:

B. 大家幫忙找一些51單片機的基本C語言程序例子,最好帶說明,謝啦

中斷控製程序:

#include <AT89X52.H>

#define uchar unsigned char
#define uint unsigned int
#define port_count P2 //P2接8LED介面
//將計數器的二進制值內用8個LED顯示出來
uchar count;//計數器(存儲容中斷次數)

void main(void)
{
count=0; //清零計數器
port_count=~count;//清零P2口
IT0=1; //INT0設為邊沿觸發方式

C. 求52單片機流水燈程序

//單片機流水燈程序,是學習單片機的最簡單的程序。

//流水燈

#include <REG51.h> //51頭文件

#define DY_PORT P1 //設置LED連接的I/O組

#define DY_SPEED 100 //設置每一個明亮級的停留時間(值域:0~65535)

void delay (unsigned int a){ // 1ms延時程序

unsigned int i;

while( --a != 0){

for(i = 0; i < 600; i++);

}

}

void main(void){

unsigned int i;

unsigned int temp;

while(1){

temp=0x01;

for(i=0;i<8;i++){ //8個流水燈逐個閃動

DY_PORT=~temp;

delay(DY_SPEED); //調用延時函數

temp<<=1;

}

temp=0x80;

for(i=0;i<8;i++){ //8個流水燈反向逐個閃動

DY_PORT=~temp;

delay(DY_SPEED); //調用延時函數

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++){ //8個流水燈依次全部點亮

DY_PORT=temp;

delay(DY_SPEED); //調用延時函數

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++){ //8個流水燈依次反向全部點亮

DY_PORT=temp;

delay(DY_SPEED); //調用延時函數

temp>>=1;

}

}

}

D. 很簡的51單片機C語言流水燈程序

#include<reg52.h>
#include <intrins.h>
#define LED P2

void delay(char i);

void main()
{ unsigned char LedVablue=0xFE;

while(1)
{

LedVablue= _crol_(LedVablue,1); //_crol_(x,Y)是<intrins.h>
//裡面的一個庫函數,相當於匯編版的帶進位循環權
LED=LedVablue;
delay(100);

}
}

void delay(char i)
{
char j;
for(;i>0;i--)
for(j=0;j<250;j++);
}

E. 簡單51單片機串口程序

試試下列程來序,這時用自中斷發送的。

#include<reg51.h>
#define uchar unsigned char
uchar txt[] = "hello";
uchar i = 0;
void main(void)
{
PCON = 0X00;
SCON = 0X50;
TMOD = 0X20;
TH1 = 0XFD;
TL1 = 0XFD;
TR1 = 1;
EA = 1;
ES = 1;
TI = 1;
while(1) {
if(i == 6) {
i = 0;
TI = 1;
}
}
}
void uart() interrupt 4
{
if(RI == 1) RI = 0;
if(TI == 1) {SBUF = txt[i++]; TI = 0;}
}

本程序,可以用串口助手接收。收到的是:hellohellohellohellohello....

F. 急求最簡單的單片機4人搶答器c51程序

;以下是以前做的八路搶答器程序,你參考一下。
ORG 0000H
JMP BEGIN
ORG 0030H
TABLE: ; 共陰極數碼管顯示代碼
DB 3FH,06H,5BH,4FH,66H ;12345
DB 6DH,7DH,07H,7FH ;6789
DELAY: MOV R5,#20
LOOP4: MOV R6,#50H ;延時20X20ms
LOOP5: MOV R7,#100
DJNZ R7,$
DJNZ R6,LOOP5
DJNZ R5,LOOP4
RET
;---------------------------------------
BEGIN: MOV P2,#0FFH ;P2口置高電平,准備接收信號
MOV R4,#0
MOV A,R4 ;R4位標志值送A寄存器
AGAIN: MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
LOOP1: MOV A,P3 ; 接收p3口的搶答信號
CPL A
JZ LOOP1
LOOP2: RRC A ;有人搶答信號則逐次移動判斷哪一位搶答
INC R4
JNC LOOP2
;********************
MOV A,R4
MOVC A,@A+DPTR ;找到相應位顯示代碼
MOV P1,A
LEDDIS:
MOV A,#0FFH
CLR C
LEDDIS1:
RLC A
DJNZ R4,LEDDIS1
MOV P0,A
LOOP3: JNB P2.2,BEGIN ;若主持人按下復位信號鍵,則轉向主程序
CPL P2.0 ;若沒按復位信號鍵,則通過p2.2口給出高低信號驅動蜂鳴器
LCALL DELAY ;調用延時子程序
SJMP LOOP3 ;p2.2口反復間隔0.4s變化,驅動蜂鳴器
END

G. 朋友們幫忙寫個51單片機的按鍵小程序匯編的

(1);P3.3小鍵盤按下P1.3亮再按0.5秒滅。
org 0000h
ajmp main0
org 0080h
MAIN0:
CLR 21H ;清標志
main:
mov c,p3.3 ;檢測按鍵
jc main
MOV R6,#200 ;設定延時
MOV R7,#200
TT0:
JNB 21H,TT2 ;檢測燈狀態
tt:
mov c,p3.3 ;檢測按鍵
jnc tt1

JNB 20H,MAIN ;檢測時間標志
CLR 20H
AJMP TT3
TT2:
mov c,p3.3 ;檢測按鍵
jnc tt2
TT3:
CPL 21H ;改變燈狀態
cpl p1.3
ajmp main
TT1: NOP ;延時但不是子程序
NOP
NOP
NOP
NOP
NOP
DJNZ R6,TT
MOV R6,#200
DJNZ R7,TT
MOV R7,#200
SETB 20H
AJMP TT
end
(2)數碼管數據 p0,數碼管控制p2 獨立按鍵p1口 ,;對獨立鍵進行按鍵次數計數,三位數碼管顯示。 *
;K1按下後,進行加1計數 *
;K2按下後,進行減1計數。 *
;K3按下後,進行加5計數。 *
;K4按下後,清計數單元,數碼管顯示0。 *
;按住鍵可以快速計數。
K1 BIT P1.4
K2 BIT P1.5
K3 BIT P1.6
K4 BIT P1.7
K_OLD EQU 30H
K_NEW EQU 31H
K_COUNT EQU 32H
DISSTART EQU 40H ;顯示單元首地址
LED_DATA EQU P0 ;數碼管數據口定義
;---------------------------------------------------------
ORG 0000H
JMP MAIN
ORG 0080H
;---------------------------------------------------------
MAIN:
MOV SP,#60H
MOV P1,#0FFH
MOV P0,#0FFH
MOV K_OLD,#00H
MOV K_COUNT,#00H
MAIN1:
CALL CONVT
CALL PLAY
CALL KEY_PROG
JMP MAIN1

KEY_PROG:
CALL K_SCAN ;鍵掃描
MOV A,K_NEW
CJNE A,K_OLD,KEY_P1
JMP KEY_P_END
KEY_P1:
MOV R4,#20
KEY_P2:
CALL CONVT ;用顯示程序來進行鍵延時
CALL PLAY
DJNZ R4,KEY_P2

CALL K_SCAN ;再判斷鍵是否按下
MOV A,K_NEW
CJNE A,K_OLD,KEY_P3
JMP KEY_P_END
KEY_P3:
JB ACC.0,LOOP1 ;K1按下
JB ACC.1,LOOP2 ;K2按下
JB ACC.2,LOOP3 ;K3按下
JB ACC.3,LOOP4 ;K4按下
JMP KEY_P_END
LOOP1:
INC K_COUNT ;鍵計數加1
JMP KEY_P_END
LOOP2:
DEC K_COUNT ;鍵計數減1
JMP KEY_P_END
LOOP3:
INC K_COUNT ;鍵計數加5
INC K_COUNT
INC K_COUNT
INC K_COUNT
INC K_COUNT
JMP KEY_P_END
LOOP4:
MOV K_COUNT,#00H ;鍵計數單元清零
KEY_P_END:
RET
;---------------------------------------------------------
;代碼變換 (HEX TO BCD)
;---------------------------------------------------------
CONVT:
MOV A,K_COUNT
MOV B,#100
DIV AB
MOV DISSTART+2,A ;百位存放在DISSTART+2
MOV A,#10
XCH A,B
DIV AB
MOV DISSTART+1,A ;十位存放在DISSTART+1
MOV DISSTART,B ;個位存放在DISSTART
RET
;---------------------------------------------------------
; 鍵掃描子程序
;---------------------------------------------------------
K_SCAN:
MOV P1,#0FFH
MOV K_NEW,#00H
MOV A,P1
CPL A
ANL A,#0F0H
SWAP A
MOV K_NEW,A
RET
;---------------------------------------------------------
;延時子程序
;---------------------------------------------------------
DELAY:
MOV R6,#200
DEL:
MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,DEL
RET
;---------------------------------------------------------
PLAY:
MOV R0,#DISSTART ;獲得顯示單元首地址
MOV R1,#07FH ;從第一個數碼管開始
MOV R2,#03H ;共顯示3位數碼管
DISP1:
MOV A,@R0 ;獲得當前位地址
MOV DPTR,#TAB_NU ;獲得表頭
MOVC A,@A+DPTR ;查表獲得顯示數據
MOV LED_DATA,A ;顯示數據
MOV P2,R1 ;開始顯示當前位
MOV A,R1 ;准備顯示下一位
RR A
MOV R1,A ;下一位
INC R0 ;取下一個單元地址
LCALL DELAY2MS ;延時 2 MS
DJNZ R2,DISP1 ;重復顯示下一個
MOV P2,#0FFH ;關閉顯示
RET ;顯示完成,返回
;---------------------------------------------------------
;延時子程序
;---------------------------------------------------------
DELAY2MS:
MOV R6,#10
DEL1:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DEL1
RET
TAB_NU:
db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h ;字形代碼表
;**********************************************************
END

兩個例子我想夠你明白的了。詳細的解釋,代表性的例子,可慢慢學習

閱讀全文

與單片機小簡單程序相關的資料

熱點內容
iphone6splus16g 瀏覽:225
oppo如何開4g網路 瀏覽:267
java不安全 瀏覽:423
導入配置文件數據失敗 瀏覽:941
linux運行class 瀏覽:227
如何做好群管理員文件 瀏覽:979
linuxvim循環搜索文件 瀏覽:147
為什麼講女孩子更應該學習編程 瀏覽:742
雲數據備份不了了是怎麼回事 瀏覽:110
數據說話的股票有哪些股 瀏覽:612
一加照片保存在哪個文件夾 瀏覽:710
聯通省公司大數據 瀏覽:300
三星wifi管理員密碼 瀏覽:213
怎樣查看優盤正在被哪個文件使用 瀏覽:9
微信里傳的文件為什麼會過期 瀏覽:248
遇到不正規的網路平台怎麼辦 瀏覽:979
win10能裝天正嗎 瀏覽:105
小米2升級後怎麼恢復原狀 瀏覽:465
dnf90版本85史詩套 瀏覽:941
法蘭的dn是什麼數據 瀏覽:954

友情鏈接