77范文网 - 专业文章范例文档资料分享平台

stc15f2k60s2pwm呼吸灯实验程序

来源:网络收集 时间:2020-06-03 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

/**************************************************** 4个按键决定4个亮度

占空比 :PWM_T/100,越大越亮

****************************************************/ #include

#define uInt unsigned int #define uchar unsigned char

uchar PWM_T = 0; //占空比控制变量

//4个按键,决定输出PWM_T值 sbit KEY_4_PIN=P3^5; sbit KEY_3_PIN=P3^4; sbit KEY_2_PIN=P3^3; sbit KEY_1_PIN=P3^2;

/**************************************************** 延时子程序

****************************************************/ void delay_ms(unsigned char ms) {

unsigned int i; do{ i = 11059200L / 13000; while(--i) ; //14T per loop }while(--ms); }

/**************************************************** 主程序

****************************************************/ void main(void) { uchar led_bh,led_fx=1; uInt n ; TMOD=0x02; //定时器0,工作模式2,8位定时模式 TH0=210; //写入预置初值(取值1-255,数越大PWM频率越高) TL0=210; //写入预置值 (取值1-255,数越大PWM频率越高) TR0=1; //启动定时器 ET0=1; //允许定时器0中断 EA=1; //允许总中断 P1=0xff; //初始化P1,输出端口 P0=0xff; //初始化P0

while(1) //PWM周期100,高电平100- PWM_T, 低电平PWM_T,低电平工作 { for(n=0;n<200;n++); //延时,取值0-65535,数字越大变化越慢 if(!KEY_4_PIN||!KEY_3_PIN||!KEY_2_PIN||!KEY_1_PIN) //通过按键改变占空比 { //这些值可以改变

if(!KEY_4_PIN) { while(1) { delay_ms(10); if(led_fx==1) led_bh++; else { led_bh--; } if(led_bh>100) led_fx=0; if(led_bh==0) led_fx=1; PWM_T=led_bh; if(!KEY_3_PIN) break ; if(!KEY_2_PIN) break ; if(!KEY_1_PIN) break ; } } else if(!KEY_3_PIN) PWM_T=0; else if(!KEY_2_PIN) PWM_T=50; else if(!KEY_1_PIN) PWM_T=100; } } }

/**************************************************** /定时器0中断模拟PWM

****************************************************/ timer0() interrupt 1 using 2 {

static uchar t ; //PWM计数 t++; //每次定时器溢出加1

if(t==100) //PWM周期 100个单位 {

t=0; //使t=0,开始新的PWM周期 //P1=0x00; //使LED灯亮 ,输出端口 P0=0x00; //使LED灯亮 ,输出端口 }

if(PWM_T==t) //按照当前占空比切换输出为高电平 { //P1=0xff; //使LED灯灭

P0=0xff; //使LED灯灭 } }

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //包含本头文件后,不用另外再包含\//stc15fxx.h //

//内核特殊功能寄存器 // 复位值 描述

sfr ACC = 0xE0; //0000,0000 累加器Accumulator sfr B = 0xF0; //0000,0000 B寄存器 sfr PSW = 0xD0; //0000,0000 程序状态字 sbit CY = PSW^7; sbit AC = PSW^6; sbit F0 = PSW^5; sbit RS1 = PSW^4; sbit RS0 = PSW^3; sbit OV = PSW^2; sbit P = PSW^0;

sfr SP = 0x81; //0000,0111 堆栈指针

sfr DPL = 0x82; //0000,0000 数据指针低字节 sfr DPH = 0x83; //0000,0000 数据指针高字节

//I/O 口特殊功能寄存器

sfr P0 = 0x80; //1111,1111 端口0 sbit P00 = P0^0; sbit P01 = P0^1; sbit P02 = P0^2; sbit P03 = P0^3; sbit P04 = P0^4; sbit P05 = P0^5; sbit P06 = P0^6; sbit P07 = P0^7;

sfr P1 = 0x90; //1111,1111 端口1 sbit P10 = P1^0; sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit P14 = P1^4; sbit P15 = P1^5; sbit P16 = P1^6; sbit P17 = P1^7;

sfr P2 = 0xA0; //1111,1111 端口2 sbit P20 = P2^0; sbit P21 = P2^1; sbit P22 = P2^2; sbit P23 = P2^3; sbit P24 = P2^4;

sbit P25 = P2^5; sbit P26 = P2^6; sbit P27 = P2^7;

sfr P3 = 0xB0; //1111,1111 端口3 sbit P30 = P3^0; sbit P31 = P3^1;

sbit P32 = P3^2;//按键 sbit P33 = P3^3; sbit P34 = P3^4; sbit P35 = sbit P36 = sbit P37 = sfr P4 = sbit P40 = sbit P41 = sbit P42 = sbit P43 = sbit P44 = sbit P45 = sbit P46 = sbit P47 = sfr P5 = sbit P50 = sbit P51 = sbit P52 = sbit P53 = sbit P54 = sbit P55 = sbit P56 = sbit P57 = sfr P6 = sbit P60 = sbit P61 = sbit P62 = sbit P63 = sbit P64 = sbit P65 = sbit P66 = sbit P67 = sfr P7 = sbit P70 = sbit P71 = sbit P72 = sbit P73 = sbit P74 = sbit P75 = P3^5; P3^6; P3^7;

0xC0; //1111,1111 端口4 P4^0; P4^1; P4^2; P4^3; P4^4; P4^5; P4^6; P4^7;

0xC8; //xxxx,1111 端口5 P5^0; P5^1; P5^2; P5^3; P5^4; P5^5; P5^6; P5^7;

0xE8; //0000,0000 端口6 P6^0; P6^1; P6^2; P6^3; P6^4; P6^5; P6^6; P6^7;

0xF8; //0000,0000 端口7 P7^0; P7^1; P7^2; P7^3; P7^4; P7^5;

sbit P76 = P7^6; sbit P77 = P7^7;

sfr P0M0 = 0x94; //0000,0000 端口0模式寄存器0 sfr P0M1 = 0x93; //0000,0000 端口0模式寄存器1 sfr P1M0 = 0x92; //0000,0000 端口1模式寄存器0 sfr P1M1 = 0x91; //0000,0000 端口1模式寄存器1 sfr P2M0 = 0x96; //0000,0000 端口2模式寄存器0 sfr P2M1 = 0x95; //0000,0000 端口2模式寄存器1 sfr P3M0 = 0xB2; //0000,0000 端口3模式寄存器0 sfr P3M1 = 0xB1; //0000,0000 端口3模式寄存器1 sfr P4M0 = 0xB4; //0000,0000 端口4模式寄存器0 sfr P4M1 = 0xB3; //0000,0000 端口4模式寄存器1 sfr P5M0 = 0xCA; //0000,0000 端口5模式寄存器0 sfr P5M1 = 0xC9; //0000,0000 端口5模式寄存器1 sfr P6M0 = 0xCC; //0000,0000 端口6模式寄存器0 sfr P6M1 = 0xCB; //0000,0000 端口6模式寄存器1 sfr P7M0 = 0xE2; //0000,0000 端口7模式寄存器0 sfr P7M1 = 0xE1; //0000,0000 端口7模式寄存器1

//系统管理特殊功能寄存器

sfr PCON = 0x87; //0001,0000 电源控制寄存器 sfr AUXR = 0x8E; //0000,0000 辅助寄存器 sfr AUXR1 = 0xA2; //0000,0000 辅助寄存器1

sfr P_SW1 = 0xA2; //0000,0000 外设端口切换寄存器1 sfr CLK_DIV = 0x97; //0000,0000 时钟分频控制寄存器 sfr BUS_SPEED = 0xA1; //xx10,x011 总线速度控制寄存器

sfr P1ASF = 0x9D; //0000,0000 端口1模拟功能配置寄存器 sfr P_SW2 = 0xBA; //xxxx,x000 外设端口切换寄存器

//中断特殊功能寄存器

sfr IE = 0xA8; //0000,0000 中断控制寄存器 sbit EA = IE^7; sbit ELVD = IE^6; sbit EADC = IE^5; sbit ES = IE^4; sbit ET1 = IE^3; sbit EX1 = IE^2; sbit ET0 = IE^1; sbit EX0 = IE^0;

sfr IP = 0xB8; //0000,0000 中断优先级寄存器 sbit PPCA = IP^7; sbit PLVD = IP^6; sbit PADC = IP^5; sbit PS = IP^4; sbit PT1 = IP^3; sbit PX1 = IP^2;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库stc15f2k60s2pwm呼吸灯实验程序在线全文阅读。

stc15f2k60s2pwm呼吸灯实验程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1085938.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: