单片机复习与流水灯 定时器程序

9、C51逻辑运算符和位操作。
10、中断的概念和各个中断源、中断优先级。
11、注意定时器中断请求标志位和串口中断请求标志位的对比。
12、对于IP,复位后的状态以及硬件优先级顺序。
13、中断响应后完成的操作。
14、中断函数和子函数的不同之处。
15、课本P181-P183:关于定时器/计数器的基本概念。
uint i,j;
for(i=0;i<num;i++)
for(j=0;j<100;j++);
}
uchar cir( uchar i)//对i进行循环右移1位,课本75页
{
uchar a,b,c;
a=i<<(8-1);
b=i>>1;
c=a | b;
return c;
}
void main()
{
uchar i,temp=0x01;
16、编程题:定时器方式1的1s定时。P186-P187
17、编程题:流水灯。
#include <reg51.h>//实现8个LED轮流点亮
#define uchar unsigned char
#define uint unsigned int
void delay( uint num)//延时函数
{
uchar i,time;
bit flag;
void delay(uint m)
{
while(m--);
}
void main()
{
TMOD=0x10;//参考课本186页初始化步骤
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET1=1;
TR1=1;
for(i=0;i<8;i++)
{
P2=temp;
delay(100);
temp=cir(temp);
}
}
利用定时器1方式1实现1S定ห้องสมุดไป่ตู้,晶振频率为12Mhz
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P2^7;
while(1)
{
if(flag==1)
{
LED=~LED;
}
}
}
void time1() interrupt 3//中断服务子函数
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
time++;
if(time==20)
{
time=0;
flag=1;
}
}
1、单片机的基本结构及其特点。
2、8051单片机基本性能。
3、8051单片机的时钟和基本时序周期。
4、8051单片机存储器结构特点。EA端口的作用。
5、8051单片机堆栈指针以及复位后的状态。
6、P0-P3口的相同之处和不同之处。P3口的每一位都有第二功能。复位后的状态
7、复位方式和程序执行方式
8、C语言相比于汇编语言的优点。
合集下载

(完整版)51单片机流水灯程序

(完整版)51单片机流水灯程序

1.第一个发光管以间隔200ms 闪烁。

2.8 个发光管由上至下间隔1s 流动,其中每个管亮500ms, 灭500ms 。

3.8 个发光管来回流动,第个管亮100ms 。

4.用8 个发光管演示出8 位二进制数累加过程。

5.8 个发光管间隔200ms 由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁 5 次。

重复此过程。

6.间隔300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到8 个管亮,然后重复整个过程。

7.间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。

1#include<reg52.h>#define uint unsigned intsbit led 仁P"0;void delay();void main(){while(1){led1=0;delay();led1=1;delay();}}void delay(){uint x,y;for(x=200;x>0;x--) for(y=100;y>0;y--);}#include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit p P1A0; uchar a;void delay(); void main() {a=0xfe;P1=a;while(1){ a=_crol_(a,1); delay();P1=a; delay();}}void delay(){uint b; for(b=55000;b>0;b--);}3#include<reg52.h>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void delay() {uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--);}void main() {uchar a,i;while(1)a=0xfe; for(i=0;i<8;i++){P1=a; delay(100); a=_crol_(a,1);}a=0x7f; for(i=0;i<8;i++){P1=a; delay(100); a=_cror_(a,1);4#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint a) { uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);}void main() {uchar b;while(1){b++;P1=~b; delay(200);5#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void main() { uchar a,i,j;while(1){ for(j=0;j<2;j++){a=0xfe; for(i=0;i<8;i++){P1=a;delay(200); a=_crol_(a,1);}a=0x7f; for(i=0;i<8;i++){P1=a; delay(200); a=_cror_(a,1);}}P1=0xff; for(j=0;j<10;j++) {delay(300);P1=~P1;}}}void delay(){uint x,y; for(x=200;x>0;x--) for(y=110;y>0;y--); 6 #include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(){uint x,y; for(x=300;x>0;x--) for(y=110;y>0;y--);} void main(){uchar a,i,j; while(1) {a=0xfe; for(j=0;j<8;j++) { for(i=0;i<8-j;i++) {P1=a; delay(200); a=_crol_(a,1);} a=_crol_(a,j); P1=0xff; a=a<<1;}} }7#include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint z){uint x,y; for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){uchar a,i,j;for(j=0;j<3;j++){P1=0x55;delay(300);P1=0xaa; delay(300);}for(j=0;j<3;j++){a=0xfe;for(i=0;i<8;i++){P1=a;delay(300); a=_crol_(a,1);}}P1=0xff; for(j=0;j<3;j++){P1=0x7e;delay(300);P1=0xbd; delay(300);P1=0xdb; delay(300);P1=0xe7; delay(300);}P1=0xff;for(j=0;j<3;j++){P1=0xe7;delay(300);P1=0xdb;delay(300);P1=0xbd;delay(300);P1=0x7e;delay(300);}P1=0xff; for(j=0;j<6;j++) {P1=~P1; delay(300);}P1=0xff;while(1);}。

嵌入式系统-流水灯、按键、定时器实验报告

嵌入式系统-流水灯、按键、定时器实验报告

嵌入式系统应用实验报告姓名:学号:学院:专业:班级:指导教师:实验1、流水灯实验编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。

实验主要考察对STM32F10X系列单片机GPIO的输出操作。

参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式:◇输入浮空◇输入上拉◇输入下拉◇模拟输入◇开漏输出◇推挽式输出◇推挽式复用功能◇开漏式复用功能根据实验要求,应该首先将GPIO配置为推挽输出模式。

由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。

由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。

反之,LED灯熄灭。

软件方面,在程序启动时,调用SystemInit()函数〔见附录1〕,对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。

GPIO配置函数为SZ_STM32_LEDInit()〔见附录2〕,函数中首先使能GPIO 时钟:RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO输入输出模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;再配置GPIO端口翻转速度:GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;最后将配置好的参数写入寄存器,初始化完成:GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。

初始化完成后,程序循环点亮一个LED并熄灭其他LED,中间通过Delay()函数进行延时,到达流水灯的效果〔程序完整代码见附录3〕。

实验程序流程图如下:硬件方面,根据实验指南,将实验板做如下连接:实验二、按键实验利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。

单片机的应用(1)流水灯

单片机的应用(1)流水灯
;模式1,GATE=1 MOV A,#00H ;T0、T1赋计数初值00H, ; 定时最长时间为0000 ~ 65536 MOV TL0,A MOV TH0,A MOV TL1,A
MOV TH1,A
TEST0: JB P32,TEST0 ;检测是否到a点 SETB TR0 ;到a点,TR0 = 1,做好取计时值准备。
T1计数 1
INT 1
解:
复习GATE的用法: GATE = 0时,TRi = 1,即可启动Ti定时 / 计数 GATE = 1时,TRi = 1,且 INTi =1,才启动定时 / 计数。
ORG 0000H
LJMP MAIN ORG 2000H
MAIN:MOV TMOD,#99H ;T0、T1均工作在定时,
ORG 0000H LJMP MAIN
ORG 000BH LJMP INSE1 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0F0H MOV TMOD,#00H
SETB TR0
SETB ET0 SETB EA
SJMP $
………
INSE1: MOV TL0,#0CH MOV TH0,#0F0H CPL P10 RETI
小结:1、MCS-51单片机内有几个定时计数器?
如何计数? 2、T0、T1有几种工作方式? 3、编程应用前要事先确定的参数有几个?
定时 / 计数器的应用
复习:
TMOD TCON
GATE C/ T TF1 TR1 M1 TF0 M0 TR0 GATE C / T IE1 IT1 M1 IE0 M0 IT0
T0定时/计数,而T1停止计数,但可作波特率发生器。T0分成两独立定时/计数 器TL0和TH0。

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(I/O口和定时器实验)一、实验目的1.学会单片机I/O口的使用方法和定时器的使用方法;2.掌握延时子程序的编程方法、内部中断服务子程序的编程方法;3.学会使用I/O口控制LED灯的应用程序设计。

二、实验内容1.控制单片机P1口输出,使LED1~LED8右循环轮流点亮(即右流水),间隔时间为100毫秒。

2.控制单片机P1口输出,使LED1~LED8左循环轮流点亮(即左流水),间隔时间为100毫秒。

3.使用K1开关控制上面LED灯的两种循环状态交替进行;4. 用定时器使P1口输出周期为100ms的方波,使LED闪烁。

5.使用定时器定时,使LED灯的两种循环状态自动交替,每一种状态持续1.6秒钟(选作)。

三、实验方法和步骤1.硬件电路设计使用实验仪上的E1、E5和E7模块电路,把E1区的JP1(单片机的P1口)和E5区的8针接口L1~L8(LED的驱动芯片74HC245的输入端)连接起来,P1口就可以控制LED 灯了。

当P1口上输出低电平“0”时,LED灯亮,反之,LED灯灭。

E7区的K1开关可以接单片机P3.0口,用P3.0口读取K1开关的控制信号,根据K1开关的状态(置“1”还是置“0”),来决定LED进行左流水还是右流水。

综上,画出实验电路原理图。

2.程序设计实验1和实验2程序流程图如图3-1实验3程序流程图如图3-2所示。

图3-1 实验1,2程序流程图图3-2 实验3程序流程图实验4程序流程图如图3-3,3-4所示。

实验5程序流程图如图3-5,3-6所示。

图3-5 实验5主程序流程图图3-6 定时器中断服务子程序流程图图3-4 定时器中断服务子程序流程图图3-3 实验4主程序流程图编程要点:(1)Pl,P3口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。

例如:MOV P1,A; P1口做输出MOV P1,#0FFHMOV A,P1;P1口做输入SETB P3.0MOV C,P3.1;从P3.1口读入数据(2)每个端口对应着一个寄存器,例:P1→90H(P1寄存器地址);P3→B0H(P3寄存器地址);寄存器的每一位对应着一个引脚,例:B0H.0→P3.0(3)对寄存器写入“0”、“1”,对应的外部引脚则输出“低电平”、“高电平”。

多种方法写出的51单片机流水灯C语言程序

多种方法写出的51单片机流水灯C语言程序

目录流水灯最原始 (1)流水灯位左移 (3)流水灯移位函数 (4)流水灯数组 (5)流水灯精确定时器 (6)流水灯最原始#include "reg51.h"sbit p0=P1^0;sbit p1=P1^1;sbit p2=P1^2;sbit p3=P1^3;sbit p4=P1^4;sbit p5=P1^5;sbit p6=P1^6;sbit p7=P1^7;voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){while(1){P1=0;p0=1;mdelay(1000);p0=0;p1=1;mdelay(1000);p1=0;p2=1;mdelay(1000);p2=0;p3=1;mdelay(1000);p3=0;p4=1;mdelay(1000);p4=0;p5=1;mdelay(1000);p5=0;p6=1;mdelay(1000);p6=0;p7=1;mdelay(1000);p7=0;}}流水灯位左移#include "reg51.h"voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char i;unsignedint led;while(1){led=0xfe;for(i=0;i<8;i++){P1=led;mdelay(1000);led=led<<1;led=led|0x01;}}}流水灯移位函数#include "reg51.h"#include "intrins.h"voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char led;led=0x01;while(1){P1=led;led=_crol_(led,1);mdelay(1000);}}流水灯数组#include "reg51.h"unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char i;while(1){for(i=0;i<8;i++){P1=table[i];mdelay(1000);}}}流水灯精确定时器#include "reg51.h"#include "intrins.h"unsignedint count=0,led;void main(){P1=0x00;led=0x01;EA=1;ET0=1;TMOD=0x01;TH0=0x3c;TL0=0xb0;TR0=1;for(;;){;}}voidbiao() interrupt 1{count++;if(count==20){count=0;P1=led;led=_crol_(led,1);}TH0=0x3c;TL0=0xb0;}。

基于51单片机的C语言流水灯程序

基于51单片机的C语言流水灯程序

基于51单片机的C语言流水灯程序#include //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint); //声明延时函数void main(){uint i;uchar temp;while(1){temp=0x01;for(i=0;i<8;i++) //8个流水灯逐个闪动{P2=~temp;delay(500); //调用延时函数temp<<=1;}temp=0x80;for(i=0;i<8;i++) //8个流水灯反向逐个闪动{P2=~temp;delay(500); //调用延时函数temp>>=1;}temp=0xFE;for(i=0;i<8;i++) //8个流水灯依次全部点亮{P2=temp;delay(500); //调用延时函数temp<<=1;}temp=0x7F;for(i=0;i<8;i++) //8个流水灯依次反向全部点亮{P2=temp;delay(500); //调用延时函数temp>>=1;}}}void delay(uint a) //延时函数,毫秒级别{uint i;while(--a!=0) //执行空操作循环,其中a为形参,由调用该函数的函数语句提供值{for(i=0;i<125;i++);//执行当0加到125时,大约会用掉1ms 的时间}}。

单片机学习之项目1 流水灯2定时器


可位寻址, 也可字节寻址
TF1 TR1 TF0 TR0 IE1 IP1 IE0 IP0
M1M0
00:方式0,13位计数寄存器 01:方式1 ,16位计数寄存器,用于定时 和计数 10:方式2 ,自动重装载8位计数寄存器 ,用于波特率发生器 11:方式3,2个8位计数寄存器
定时器使用步骤
1.设置TMOD,使之工作在需求状态;
时间间隔1s的双向流水灯;
方法2
50ms 初值=15536=0x3CB0 #include<reg52.h> void main() { unsigned int i,j,value; TMOD=0x01; TH0=0x3c; TL0=0xb0; TR0=1; //此位可位操作 while(1) { value=0x01; for(i=0;i<14;i++) { for(j=0;j<20;j++) { while(TF0!=1); TH0=0x3c; TL0=0xb0; TF0=0; } P1=~value; if(i<7) value=value<<1; else value=value>>1;
#include<reg52.h> void main() { unsigned int i,value,dec; TMOD=0x01; TH0=0x3c; TL0=0xb0; TR0=1; //此位可位操作 while(1) { value=254; dec=1; for(i=0;i<8;i++) { while(TF0!=1); TH0=0x3c; TL0=0xb0; P1=value; value=value-dec; dec=dec*2; } }

流水灯C语言程序

流水灯C语言程序流水灯是一种常见的电子显示效果,通常用于展示灯光的流动效果。

在C语言中,我们可以通过控制单片机的IO口来实现流水灯的效果。

以下是一个标准格式的C语言程序,用于实现流水灯效果。

```c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#define LED_COUNT 8 // 流水灯的数量#define DELAY_MS 500 // 每一个灯亮起的延迟时间(毫秒)int main() {int leds[LED_COUNT] = {0}; // 存储每一个灯的状态,0表示灭,1表示亮 int i, j;while (1) {// 灯往右挪移for (i = LED_COUNT - 1; i > 0; i--) {leds[i] = leds[i - 1];}leds[0] = 1;// 输出灯的状态for (i = 0; i < LED_COUNT; i++) {if (leds[i]) {printf("*"); // 亮的灯用*表示} else {printf(" "); // 灭的灯用空格表示}}printf("\n");// 延迟一段时间usleep(DELAY_MS * 1000);// 清空屏幕system("clear");}return 0;}```上述程序使用了C语言的基本语法和系统函数,实现了一个简单的流水灯效果。

程序中的`LED_COUNT`表示流水灯的数量,可以根据实际需求进行调整。

`DELAY_MS`表示每一个灯亮起的延迟时间,单位为毫秒。

在程序的主循环中,通过不断改变灯的状态和输出屏幕,实现了流水灯的效果。

首先,灯往右挪移,即将前一个灯的状态赋值给后一个灯,最后一个灯的状态设置为亮。

定时器控制流水灯

定时器控制流水灯The Standardization Office was revised on the afternoon of December 13, 2020成绩信息与通信工程学院实验报告(操作性实验)课程名称:微机原理与微控制器应用实验题目:c51单片机的定时器实验指导教师:班级: 学号:学生姓名:一、实验目的和任务1.掌握定时器中断的编程方法。

2.掌握keil C51集成开发环境在硬件仿真条件下各参数的设置。

二、实验仪器及器件硬件:电脑一台、微机原理与单片机试验箱:51开发板、开关及LED显示单元、导线若干软件:keil uVision4三、实验内容及电路图利用实验板上的八个LED灯作显示,利用定时器中断编写中断一次为50ms的定时程序,控制单片机定时器进行定时,总定时时间为。

四、流程图与程序#include ""#include<>int temp=0x01,num=0;void T0Int() interrupt 1{TH0=(65536-45872)/256;TL0=(65536-45872)%256;num++;if(num==15) {num=0;P1=_crol_(temp,1);temp=P1;}}void main(){EA=1;ET0=1;TMOD=0X01;TH0=(65536-45872)/256;TL0=(65536-45872)%256;TR0=1;while(1);}五、实验结果八个LED灯由左往右依次亮起,并且每个LED灯点亮时间大约为。

六、实验数据分析及处理从实验现象来看,LED灯从左到右依次点亮,符合实验要求,说明实验操作正确,实验结果正确。

七、实验结论与感悟(或讨论)。

stc89c51单片机流水灯程序

51单片机流火灯步调之阳早格格创做步调一(用C谈话编的最前提的步调)#include<reg52.h>#include<stdio.h>sbit D0=P1^0;//位定义,把P1心的第一个管足定义为D0 sbit D1=P1^1;// 位定义,把P1心的第二个管足定义为D1 sbit D2=P1^2;// 位定义,把P1心的第3个管足定义为D2 sbit D3=P1^3;// 位定义,把P1心的第4个管足定义为D3 sbit D4=P1^4;// 位定义,把P1心的第5个管足定义为D4 sbit D5=P1^5;// 位定义,把P1心的第6个管足定义为D5 sbit D6=P1^6;// 位定义,把P1心的第7个管足定义为D6 sbit D7=P1^7;// 位定义,把P1心的第8个管足定义为D7 void main(){while(1)//修坐大的死循环.{unsigned int i,j;D0=0,D7=1;//明灯1,闭灯8for(i=50;i>0;i)for(j=200;j>0;j);//二个FOR组成的延时D0=1,D1=0;// 明灯2,闭灯1for(i=50;i>0;i)for(j=200;j>0;j);D1=1,D2=0;for(i=50;i>0;i)for(j=200;j>0;j);D2=1,D3=0;for(i=50;i>0;i)for(j=200;j>0;j);D3=1,D4=0;for(i=50;i>0;i)for(j=200;j>0;j);D4=1,D5=0;for(i=50;i>0;i)for(j=200;j>0;j);D5=1,D6=0;for(i=50;i>0;i)for(j=200;j>0;j);D6=1,D7=0;for(i=50;i>0;i)for(j=200;j>0;j);}}步调二(用swich case语句编的)#include<reg52.h>//51单片机的头文献. sbit d1=P1^0;//sbit d2=P1^1;sbit d3=P1^2;sbit d4=P1^3;sbit d5=P1^4;sbit d6=P1^5;sbit d7=P1^6;sbit d8=P1^7;void main(){unsigned int i=1,a,b;while(1)//大循环{for(i=1;i<15;i++){for(a=0;a<80;a++)//延时.for(b=0;b<200;b++);switch(i){case 1:d2=1,d1=0,d8=1;break; case 2:d1=1,d2=0; break; case 3:d2=1,d3=0; break; case 4:d3=1,d4=0; break; case 5:d4=1,d5=0; break; case 6:d5=1,d6=0; break; case 7:d6=1,d7=0; break; case 8:d7=1,d8=0; break;case 9:d8=1,d7=0;break;case 10:d7=1,d6=0;break;case 11:d6=1,d5=0;break;case 12:d5=1,d4=0;break;case 13:d4=1,d3=0;break;case 14:d3=1,d2=0;break;}};}}步调三(最简净的):#include<reg52.h>#include<intrins.h>//_crol_战_cror_的头文献. void delay(unsigned int z)//修坐延时子函数. {unsigned int i,j;for(i=0;i<z;i++)for(j=0;j<200;j++);}void main(){unsigned char d;d=0xfe;while(1)//{for(;d>0x7f;){P1=d;delay(100);//调用延时子函数延时.d=_crol_(d,1);//循环左移.}for(;d<0xfe;){P1=d;delay(100);d=_cror_(d,1);//循环左移,让灯倒回来.}}}数码管流火灯:#include<reg52.h>#include<intrins.h>void delay(unsigned int a){unsigned int b;b=a;while(b>0)b;}void main(){unsigned int i,j;unsigned code A[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0x3f:为0,即数码管明“0”.P2=0;//挨开数码管的第一个,P0=j;//对于数码管举止赋值while(1){i=0;for(j=0;j<16;j++){P2=i;P0=A[j];delay(50000);i++;}}}数码管步调二:#include<intrins.h>void delay(unsigned int a){unsigned int b;b=a;while(b>0)b;}void main(){int i,j;unsigned code A[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};P2=0;P0=j;while(1){j=0;for(i=0;i<8;i++){P2=i;P0=A[j];delay(50000);j++;}for(i=7;i>=0;i){P2=i;P0=A[j];delay(50000);j++;}}}中断步调一#include<reg52.h>#include<intrins.h>void delay(unsigned int a){unsigned int b;b=a;while(b>0)b;}void main(){int i,j;unsigned code A[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};EA=1;//挨开总中断EX0=1;//挨开中部中断0.IT0=0;//采用其为矮电仄灵验灵验.当CPU检测到P3.3引足上出现灵验的中断旗号时,中断标记IE1(TCON.3)置1,背CPU申请中断.P2=0;P0=j;P1=0xfe;while(1){j=0;for(i=0;i<8;i++){P2=i;P0=A[j];delay(50000);j++;}for(i=7;i>=0;i){P2=i;P0=A[j];delay(50000);j++;}}}void exist() interrupt 0//中断子步调,其中“0”为中部中断的序号{P1=_crol_(P1,1);delay(50000);}定时步调;include<reg52.h>unsigned int i=0,j=0,t;unsigned code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void main(){TMOD=0x01;//对于TMOD赋值,以决定T0战T1的处事办法.TH0=(6553650000)/256;TL0=(6553650000)%256;//定时/计数器的真量是加1计数器(16位),由下8位战矮8位二个寄存器组成.对于下8位战矮8位赋值.EA=1;//开总中断ET0=1;//则对于IE赋值,开搁中断TR0=1;//使TR0或者TR1置位,开用定时/计数器定时. while(1){if(t==20){t=0;if(j==8)j=0;if(i==16)i=0;P2=j;P0=a[i];i++;j++;}}}void time() interrupt 1//定时子步调,其中“1”为定时/计数器序号{TH0=(6553650000)/256;TL0=(6553650000)%256;t++;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档