搜索
bottom↓
回复: 44

为了不封号发帖,一个简单的利用定时器中断产生pwm

[复制链接]

出0入4汤圆

发表于 2014-11-22 08:14:54 | 显示全部楼层 |阅读模式
由于本人单片机只是业余爱好,一直没发帖,最近不发贴就封号,不得已发个贴,望大家海涵
单片机是stc15f104,按键功能就是3段调光
*****************************************************
*******************************************************/
#include<STC15F104E.h>
#include <intrins.h>
#define uchar unsigned char
sbit k1 = P3^4;
sbit pwm1=P3^2;
uchar keycom,tm0cm;
uchar keyda;
uchar pwmda;
void pwmsz (void);
/**************************keydelay******************/
           void keydelay (void)
  {   
      uchar i=200;
      while ( i--);
          }
/**********************keyjc***************************/
             uchar keyjc ( void )
  { uchar i,x;
          if (k1==0){for (i=40;i>0;i--){if (k1==1) {x=0;goto ned;}
          keydelay();} while(!k1); x=1;}else x=0; ned: return (x); }
/************************************keyexe************/
          void keyexe (void)
        { uchar i;
                  i=keyjc();
                if(i==1){ keyda++; pwmsz();if(keyda>3) keyda=0;}
                 
        }
/*****************************pwmsz****************/
                   void pwmsz (void)
        { if(keyda==0) pwmda=10;
          if(keyda==1) pwmda=83;
          if(keyda==2) pwmda=168;
          if(keyda==3) pwmda=250;
         }
/*******************************iosz*****************/
            void iosz (void)
     {  P3M1=0x10; //设置p34为高阻输入
            P3M0=0x04; //设置p32为推挽输出
            }
/***************************tm0sz*******************/
           void tm0sz ( void)
         {          
                 //AUXR=0XC0;
             TCON =0x30; //开TM0中断
             //TMOD =0x03; // 设置tm0,tm1为8位定时器
                IE=0x82;//开全局中断
         }
/*************************************tm0中断********************/
       void tm0pwm () interrupt 1
        {  
             
                 if(tm0cm==0)
                { TL0=pwmda; tm0cm=1;
            if(keyda==0) pwm1=0;
                 else pwm1=1;
                 goto end;
                 }
                 if(tm0cm==1)
                { TL0=255-pwmda; tm0cm=0;
          if(keyda==3) pwm1=1;
                 else pwm1=0;
                  goto end;
                 }
         end: TH0=0xff;
              _nop_();
         }
            
/*************************************/
       void main(void)
  {
   iosz();
   tm0sz();
   while (1)
   { keyexe(); }
  }

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
头像被屏蔽

出0入0汤圆

发表于 2014-11-22 08:16:17 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2014-11-22 08:26:31 | 显示全部楼层
不发贴也不封号啊。怕怕。。。

出20入186汤圆

发表于 2014-11-22 08:28:12 | 显示全部楼层
你号是盗的么?不是盗的你慌什么?

出0入0汤圆

发表于 2014-11-22 08:30:56 | 显示全部楼层
  哈哈,学习学习了。

出0入0汤圆

发表于 2014-11-22 08:35:29 | 显示全部楼层
为了不封号回个帖

出0入0汤圆

发表于 2014-11-22 08:38:59 | 显示全部楼层
支持一下楼主。

出0入0汤圆

发表于 2014-11-22 12:38:18 | 显示全部楼层
支持一下楼主。LZ搞个酷贴就可以无忧了!

出0入0汤圆

发表于 2014-11-22 12:40:26 | 显示全部楼层
哎,我看看不说话多不行了吗,赶紧来顶一下。

出0入0汤圆

发表于 2014-11-22 12:46:25 | 显示全部楼层
好心酸的感觉啊

出90入0汤圆

发表于 2014-11-22 12:50:14 | 显示全部楼层
楼主可以再贴下原理图、实物图,这样方便大家交流学习~

出0入0汤圆

发表于 2014-11-22 13:05:47 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2014-11-22 13:19:54 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2014-11-22 13:49:24 | 显示全部楼层
支持一下~~~~~~~

出0入0汤圆

发表于 2014-11-22 14:24:42 | 显示全部楼层
这样不是挺麻烦的,还要定时器没有PWM输出?

出0入0汤圆

发表于 2014-11-22 14:26:32 来自手机 | 显示全部楼层
为了不封号我也准备发一帖,先支持一下!

出0入0汤圆

发表于 2014-11-22 15:28:49 | 显示全部楼层
大家多贡献一点,增加下活力和气氛吧

出0入21汤圆

发表于 2014-11-22 15:36:40 | 显示全部楼层
我想知道:请教问题也算发帖吗?

出0入0汤圆

发表于 2014-11-22 15:37:39 | 显示全部楼层
支持分享,共同进步!

出0入0汤圆

发表于 2014-11-22 16:38:32 | 显示全部楼层
mark,顶一下贴

出0入0汤圆

发表于 2014-11-22 17:46:10 | 显示全部楼层
什么情况/...................

出0入0汤圆

发表于 2014-11-22 18:25:40 | 显示全部楼层
楼主这代码是几路输出的pwm?

出0入4汤圆

发表于 2014-11-22 18:47:35 | 显示全部楼层
赞下

出0入0汤圆

发表于 2014-11-22 19:34:18 | 显示全部楼层
51单片机我基本不用了,改投stm32阵营了

出0入4汤圆

 楼主| 发表于 2014-11-23 21:39:11 | 显示全部楼层
SXH201312 发表于 2014-11-22 14:24
这样不是挺麻烦的,还要定时器没有PWM输出?

1块几的stc15f104不带pwm。同样的价格,stm8s003就功能强大多了,但是封装不好生产,只是为了用sop8的封装才用stc15f104

出0入4汤圆

 楼主| 发表于 2014-11-23 21:46:03 | 显示全部楼层
lxa0 发表于 2014-11-22 18:25
楼主这代码是几路输出的pwm?

1路,stc15f104就2个定时器,要用实时性强的中断法pwm最多做两路,如果对pwm没有严格要求,可以用计数查询的方法产生很多路,但是处理别的程序比如按键检测时可能会对pwm有影响

出0入4汤圆

 楼主| 发表于 2014-11-23 21:50:02 | 显示全部楼层
程序 if(i==1){ keyda++; pwmsz();if(keyda>3) keyda=0;} 处有错误
应该是if(i==1){ keyda++; if(keyda>3) keyda=0;pwmsz();}

出0入0汤圆

发表于 2014-11-24 09:09:04 | 显示全部楼层
kcfoo1 发表于 2014-11-23 21:39
1块几的stc15f104不带pwm。同样的价格,stm8s003就功能强大多了,但是封装不好生产,只是为了用sop8的封 ...

我们现在正在用STM8S003开发产品,不好生产是不是因为它的脚距啊?

你用SOP8是不是用过锡炉的而不是回流焊?

出0入4汤圆

 楼主| 发表于 2014-11-24 10:20:06 | 显示全部楼层
SXH201312 发表于 2014-11-24 09:09
我们现在正在用STM8S003开发产品,不好生产是不是因为它的脚距啊?

你用SOP8是不是用过锡炉的而不是回流 ...

一般有插件的都是打红胶过波峰焊呀,除非全贴片的,

出0入0汤圆

发表于 2014-11-24 10:22:11 | 显示全部楼层
好久没用goto了

出0入0汤圆

发表于 2014-11-24 10:24:50 | 显示全部楼层

用这个贴代码会比较整齐,另外建议你注释详细点,这样自己理解更深刻,别人看起来也更明朗。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-11-24 22:57:28 来自手机 | 显示全部楼层
支持下!   我也没发过贴   我菜鸟一个

出0入0汤圆

发表于 2014-11-25 23:51:51 | 显示全部楼层
哈哈,赞一个~

出0入0汤圆

发表于 2014-11-26 07:53:28 来自手机 | 显示全部楼层
回帖应该也算的吧

出0入0汤圆

发表于 2014-11-26 08:06:07 | 显示全部楼层
为了不封号回个帖

出0入0汤圆

发表于 2014-11-26 08:31:02 | 显示全部楼层
这也行啊,那我也来水一贴吧;

出0入0汤圆

发表于 2014-11-26 09:10:08 | 显示全部楼层
不错,赞一个~

出0入0汤圆

发表于 2014-11-26 09:14:17 来自手机 | 显示全部楼层
看看已示存在

出0入0汤圆

发表于 2014-11-26 17:14:36 来自手机 | 显示全部楼层
支持下~

出0入0汤圆

发表于 2014-11-26 17:20:50 | 显示全部楼层
不错!stc的很少用,支持下楼主

出0入0汤圆

发表于 2014-11-27 09:50:38 | 显示全部楼层
谢谢分享,mark

出0入0汤圆

发表于 2014-11-27 10:18:16 | 显示全部楼层
学习了!还没用过goto语句!goto是不是汇编语句啊,还是keil的语句啊!

出0入0汤圆

发表于 2014-11-27 11:03:48 来自手机 | 显示全部楼层
lz分割线习惯和我一模一样

出0入0汤圆

发表于 2014-11-27 19:23:07 | 显示全部楼层
我也想发帖,无奈水平不够,没什么东西能让人感兴趣,故不要露丑了

出0入0汤圆

发表于 2014-12-7 17:18:39 | 显示全部楼层
支持一下下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 10:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表