include reg 51 h char i100 void main

  • Slides: 78
Download presentation

参考程序: #include <reg 51. h> char i=100; void main () { TMOD=0 x 01;

参考程序: #include <reg 51. h> char i=100; void main () { TMOD=0 x 01; //定时器T 0为方式 1 TH 0=0 xee; //设置定时器初值 TL 0=0 x 00; P 1=0 x 00; //P 1口 8个LED点亮 EA=1; //总中断开 ET 0=1; //开T 0中断 TR 0=1; //启动T 0 while(1); //循环等待 } 31

void T 1_int(void) interrupt 3 //T 1中断函数 { for(; ; ) //无限循环 { P

void T 1_int(void) interrupt 3 //T 1中断函数 { for(; ; ) //无限循环 { P 1=0 xff; //8位LED全灭 Delay(500) ; //延时 500 ms P 1=0; //8位LED全亮 Delay(500); //延时 500 ms } } 39

参考程序如下: #include<reg 51. h> sbit P 1_0=P 1^0; sbit P 1_1=P 1^1; void main(void)

参考程序如下: #include<reg 51. h> sbit P 1_0=P 1^0; sbit P 1_1=P 1^1; void main(void) {TMOD=0 x 61;/*设置定时器T 0为方式 1定时,T 1为方式 2计数*/ P 1_0=0; TH 0=(65536 − 10000) /256; /*给T 0装初值*/ TL 0=(65536 − 10000) %256; TH 1=206; /*给T 1装初值*/ TL 1=206; EA=1; ET 0=1; /* 总中断开 */ /* 允许T 0中断 */ 48

ET 1=1; /* 允许T 1中断 */ TR 0=1; /* 启动T 0 */ TR 1=1;

ET 1=1; /* 允许T 1中断 */ TR 0=1; /* 启动T 0 */ TR 1=1; /* 启动T 1 */ while (1); } void T 0_int(void) interrupt 1 { TH 0=(65536 − 1000) /256; TL 0=(65536 − 1000) %256; P 1_0=! P 1_0; } void T 1_int(void) interrupt 3 {TH 1=206; X TL 1=206; X P 1_1=! P 1_1; }; /*不需要这两条语句*/ /* T 1为方式 2,自动重装初值,不需要重新赋初值*/ /* P 1. 1脚产生 1 s的方波*/ 。 49

{ i=460; while(j<2000); j=0; i=360; while(j<2000); j=0; } } void T 1(void) interrupt 3

{ i=460; while(j<2000); j=0; i=360; while(j<2000); j=0; } } void T 1(void) interrupt 3 using 0 { TR 1= 0; sound=~sound; //TH 1=f 1(i); //TL 1=f 2(i); TH 1=XX; TL 1=XX; TR 1=1; } //循环等待 //定时器T 1中断函数 //关闭T 1 //P 1. 7输出求反 //T 1的高 8位重新赋初值. //T 1的低8位重新赋初值. //建议直接赋值 //启动定时器T 1 53

参考程序如下: #include<reg 51. h> //头文件 unsigned char code discode 1[]={0 xbf, 0 x 86,

参考程序如下: #include<reg 51. h> //头文件 unsigned char code discode 1[]={0 xbf, 0 x 86, 0 xdb, 0 xcf, 0 xe 6, 0 xed, 0 xfd, 0 x 87, 0 xff, 0 xef}; //数码管显示 0~ 9的段码表, 带小数点 unsigned char code discode 2[]={0 x 3 f, 0 x 06, 0 x 5 b, 0 x 4 f, 0 x 66, 0 x 6 d, 0 x 7 d, 0 x 07, 0 x 7 f, 0 x 6 f}; //数码管显示 0~ 9的段码表,不带小数点 unsigned char timer=0; //timer记录中断次数 unsigned char second; //second储存秒 unsigned char key=0; //key记录按键次数 main() //主函数 { TMOD=0 x 01; //定时器T 0方式 1定时 ET 0=1; //允许定时器T 0中断 56

参考程序如下: #include<reg 51. h> #define uint unsigned int #define uchar unsigned char sbit P

参考程序如下: #include<reg 51. h> #define uint unsigned int #define uchar unsigned char sbit P 3_3=P 3^3; //位变量定义 uchar count_high; //定义计数变量,用来读取TH 0 uchar count_low; //定义计数变量,用来读取TL 0 uint num; uchar shiwan, qian, bai, shi, ge; uchar flag; uchar code table[]={0 x 3 f, 0 x 06, 0 x 5 b, 0 x 4 f, 0 x 66, 0 x 6 d, 0 x 7 d, 0 x 07, 0 x 7 f, 0 x 6 f}; //共阴极数码管段码表 64

void delay(uint z) //延时函数 { uint x, y; for(x=z; x>0; x--) for(y=110; y>0; y--);

void delay(uint z) //延时函数 { uint x, y; for(x=z; x>0; x--) for(y=110; y>0; y--); } void display(uint a, uint b, uint c, uint d, uint e, uint f) //数码管显示函数 { P 2=0 xfe; P 0=table[f]; delay(2); P 2=0 xfd; P 0=table[e]; delay(2); P 2=0 xfb; P 0=table[d]; 65

delay(2); P 2=0 xf 7; P 0=table[c]; delay(2); P 2=0 xef; P 0=table[b]; delay(2);

delay(2); P 2=0 xf 7; P 0=table[c]; delay(2); P 2=0 xef; P 0=table[b]; delay(2); P 2=0 xdf; P 0=table[a]; delay(2); } 66

uchar minute; //分钟计数变量 uchar hour; //小时计数变量 uchar code date[]=" H. I. T. CHINA ";

uchar minute; //分钟计数变量 uchar hour; //小时计数变量 uchar code date[]=" H. I. T. CHINA "; //LCD第 1行显示的内容 uchar code time[]=" TIME 23: 59: 55 "; //LCD第 2行显示的内容 uchar second=55, minute=59, hour=23; void clock_init() { uchar i, j; for(i=0; i<16; i++) { write_data(date[i]); } write_com(0 x 80+0 x 40);

for(j=0; j<16; j++) { write_data(time[j]); } } void clock_write( uint s, uint m, uint

for(j=0; j<16; j++) { write_data(time[j]); } } void clock_write( uint s, uint m, uint h) { write_sfm(0 x 47, h); write_sfm(0 x 4 a, m); write_sfm(0 x 4 d, s); } void main() { init 1602(); //LCD初始化 clock_init(); //时钟初始化

TMOD=0 x 01; //设置定时器T 0为方式 1定时 EA=1; // 总中断开 ET 0=1; // 允许T 0中断

TMOD=0 x 01; //设置定时器T 0为方式 1定时 EA=1; // 总中断开 ET 0=1; // 允许T 0中断 TH 0=(65536 -46483)/256; //给T 0装初值 TL 0=(65536 -46483)%256; TR 0=1; int_time=0; //中断次数、秒、分、时单元清0 second=55; minute=59; hour=23; while(1) { clock_write(second , minute, hour); } }