导航:首页 > 编程语言 > 单片机小简单程序

单片机小简单程序

发布时间: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

两个例子我想够你明白的了。详细的解释,代表性的例子,可慢慢学习

阅读全文

与单片机小简单程序相关的资料

热点内容
5s升级ios92无服务 浏览:354
ubuntu翻译工具 浏览:665
wifi安装教程 浏览:398
苹果有些qq文件打不开 浏览:139
微信分身图片缓存在哪个文件 浏览:544
众筹用什么网站 浏览:1
天马座的幻想版本 浏览:536
微云保存文件图片没有了 浏览:236
如何把excel表格图片导出到文件夹 浏览:387
qq三国快速升级攻略 浏览:660
js监听手机home事件 浏览:439
第2章linux的桌面管理副本 浏览:452
qq邮箱手机上登录微信账号密码错误 浏览:627
编程如何让人物重复发射子弹 浏览:853
db2查看表空间文件 浏览:607
ps文件界面设置 浏览:779
c语言12位的数据应该怎么存储 浏览:953
将ape导入iphone 浏览:107
js组合快捷键 浏览:174
linux系统盘默认挂在的文件夹 浏览:667

友情链接