昆明理工大学《单片机原理及应用及C51程序设计》C语言程序设计例题 下载本文

内容发布更新时间 : 2024/10/24 19:18:20星期一 下面是文章的全部内容请认真阅读。

// P1.0接开关K1,P1.1接开关K2,P2.0接LED1,P2.1接LED2,实现:

// 1. K1合上时LED1亮0.5秒周期闪烁,LED2按1秒闪烁;K断开时,两个都按0.1秒闪烁

// 2. K2合上时执行1动作,K2断开时LED常亮 // 硬件:K合上读到低电平(0),输出低电平LED亮

#include

sbit K1=P1^0;sbit K2=P1^1; sbit LED1=P2^0;sbit LED2=P2^1; void main() {

TMOD=0X01; TH0=236; TL0=120;// 5ms (65536-5000)/256;(65536-5000)%6 TR0=1;ET0=1;EA=1; while(1); }

void T0_ISR() interrupt 1 // 0.005秒执行一次 {

static char c1=0,c2=0; // 两个LED闪烁周期计数器 char m1,m2; // 电平改变的时间(5ms的倍数) if(K1==0) {m1=50;m2=100;} else {m1=10;m2=10;} if(++c1==m1) { c1=0; if(K2==0) LED1=!LED1; else LED1=0; }

if(++c2==m2) { c2=0; if(K2==0) LED2=!LED2; else LED2=0; }

TH0=236; TL0=120; // 重装初值 }

// 整点报时,响铃10秒停,P1.0接蜂鸣器,低电平响铃,高电平不响铃

#include

sbit beep=P1^0; char hour,min,sec,tenms; void main() {

hour=0;min=0;sec=0;tenms=0;

TMOD=0X10; TH1=216; TL1=240;// 10毫秒,(65536-10000)/256;(65536-10000)%6 TR1=1;ET1=1;EA=1; while(1) { beep = !( hour==0 && min==0 && (0<=sec && sec<=10) ); // 响铃条件 // 下面大括号为打铃器 { bit a; a = ( hour==8 && min==0 && (0<=sec && sec<=20) ); a = a || ( hour==8 && min==0 && (0<=sec && sec<=20) ); a = a || ( hour==8 && min==45 && (0<=sec && sec<=20) ); a = a || ( hour==8 && min==50 && (0<=sec && sec<=20) ); a = a || ( hour==9 && min==35 && (0<=sec && sec<=20) ); a = a || ( hour==9 && min==50 && (0<=sec && sec<=20) ); ... beep = !a; } } }

void T0_ISR() interrupt 1 // 0.01秒执行一次 {

if(++tenms==100) { tenms=0; if(++sec==60) { sec=0; if(++min==60) { min=0; if(++hour==24) hour=0; } } }

TH1=216; TL1=240; // 重装初值 }

// 双机通信,A机片内RAM30H~3FH的数据块通过串行口传送到B机的片内RAM40H~4FH中,12MHz晶振,为确保传输正确,B机应先开机 // A机程序

#include void main() {

unsigned char data *p,i;

SCON = 0x40; PCON=0x00; TMOD=0x20; TH1=230; TL1=230; TR1=1;// 1200bps p=0x30;

for(i=0;i<16;i++) { SBUF=*(p+i); while(TI==0); TI=0; }

while(1); }

// B机程序

#include void main() {

unsigned char data *p,i;

SCON = 0x50; PCON=0x00; TMOD=0x20; TH1=230; TL1=230;TR1=1;// 1200bps

p=0x40;i=0; while(i<16) { while(RI==0); *(p+i)=SBUF; RI=0; i++; } }