找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2836|回复: 7
收起左侧

求BASCOM几条代码,实现D触发器功能。

[复制链接]
回帖奖励 10 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次(中奖概率 10%)
ID:364364 发表于 2018-9-29 16:15 | 显示全部楼层 |阅读模式
PD.0输入端 上拉电阻有效,接按钮开关到地,PB.0为输出端。
那么问题来了,怎么能让按钮按下,输出端出高电平,再按下输出端为低电平?

要求 按钮长时间按下,输出端电平不会反复高低变换。意思就是用代码实现CD4013的功能。

求大神解答,付黑币为报酬。若对黑币没兴趣,可以人民币。
回复

使用道具 举报

ID:342822 发表于 2018-9-30 12:39 | 显示全部楼层
这是RS触发器功能而非D触发器功能,见3楼
回复

使用道具 举报

ID:364364 发表于 2018-9-30 14:03 | 显示全部楼层
什么触发器 无所谓,关键是代码。我弄了好几天了,最多K1开,K2关.就是搞不出来一个开关。
回复

使用道具 举报

ID:342822 发表于 2018-10-2 13:16 | 显示全部楼层
给你一个51代码做参考。
根据这个来写bascom-avr程序。
使用计数法识别长短按*/
#include<reg52.h>
#define key_S 1000 //宏定义短按(约20ms)
#define key_L key_S*50 //宏定义长按(约1s)
//定义端口
sbit KEY=P1^4;
sbit LED1 = P2^0;
sbit LED2 = P2^1;
unsigned int count=0;//计数变量

int main (void)
{
        LED1=1;
        LED2=1;               
        KEY=1; //按键输入端口电平置高      
        while(1)         //主循环
        {
                if(!KEY)  //如果检测到低电平,说明按键按下
                {  
                        count++;  
                        if(count==key_L)                                //长按
                                LED2=!LED2;
                        if(count>key_L)
                                count=key_L+1;                                //防止count溢出         
                }  
                else                                                                        //按键抬起
                {  
                        if(count>key_S && count<key_L)//短按
                                LED1=!LED1;
                        count=0;                                                        //count清0
                }   
        }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:364364 发表于 2018-10-2 19:27 | 显示全部楼层
感谢楼上的51代码,嘿嘿 C语言的咱看不懂,我只会一点点BASCOM(BASIC)语言,虽然不会用,但是还得是要感谢你!
回复

使用道具 举报

ID:342822 发表于 2018-10-3 21:45 | 显示全部楼层
bascom avr-----用中断实现的单键控制开关——代码
rem Main.bas file generated by New Project wizard
rem
rem Created:   周三 10月 3 2018
rem Processor: ATmega8
rem Compiler:  BASCOM-AVR


$regfile="m8det.dat"
$crystal=8000000
ddrd.3=0
portd.3=1
ddrc.0=1
Config Int1 = Falling                                       'int1由何种信号引发rising/Falling/lowlevel
On Int1 Abc nosave                                                 'int1中断服务子程序标号是abc
Enable Interrupts                                           'cpu允许中断nterrupts是全局中断
Enable Int1                                                 '允许中断,enable是使能的意思
                                                        
do
IDLE                                                   
loop
End

Abc:                                                        '中断服务子程序入口

portc.0=not portc.0
Return
回复

使用道具 举报

ID:63090 发表于 2018-10-4 21:54 | 显示全部楼层
这个很简单的,不复杂
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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