矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: pdshyh

关于电源电路地的请教

[复制链接]
     
 楼主| 发表于 2018-12-21 21:42:43 | 显示全部楼层
washu 发表于 2018-12-21 18:15
因为那个考拉的帖子我昨天还在某裙说了这事,同样用死太惨 51 的大拿表示又不是 30 年前了还汇编   ...

关于使用单片机语言,谢谢washu老师的讲解,选择C(C#还不是C,C++也不是行吧)和 Arduino ,给出了选择理由和各自的优缺点,顺手拈来,有理有据。我心目中的白马王子“汇编语言”给枪毙了 ,主要还是接触单片机少,先入为主,感觉汇编语言不错 ,刚刚c语言编程keil和proteus联调做了一个小程序LED灯,烧录流水灯还有常亮都可以。 ,有时间再看看Arduino 语言,您提到:常用器件比如 ADC 啦,DAC 啦,移位寄存器啦这个那个以及单片机内部资源比如 PWM 啦,IIC 总线啦都做好了库,只需要直接用,挺诱惑的 ,对于单片机的选择也是刚刚仿真,开发板还没有买,51单片机资料下载了不少,如何玩单片机我自己也不知道,不知道将来能干什么,谢谢指教,感谢!
回复 支持 反对

使用道具 举报

     
发表于 2018-12-22 12:03:41 | 显示全部楼层
pdshyh 发表于 2018-12-21 21:42
关于使用单片机语言,谢谢washu老师的讲解,选择C(C#还不是C,C++也不是行吧)和 Arduino ,给出了选择 ...

我是出于有需求才学单片机的,简单说就是希望用程序去控制电路这样的需求,比如数控电源就是典型的用程序控制电路 有需求自然就学得好。

汇编和高级语言的区别在于前者是硬件思路(具体)后者是数学思路(抽象),谁更合适看各人了,不过 Arduino 的语言其实也是一种经过包装的简化的 C 语言,学好 C 语言 Arduino 上手更快   汇编嘛...
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-12-22 17:51:44 | 显示全部楼层
本帖最后由 pdshyh 于 2018-12-22 17:53 编辑
washu 发表于 2018-12-22 12:03
我是出于有需求才学单片机的,简单说就是希望用程序去控制电路这样的需求,比如数控电源就是典型的用程序 ...


谢谢washu 老师, Arduino和 C 语言有渊源, 也是一种经过包装的简化的 C 语言,知道了,我网搜搜c#比C++还要新的语言,单片机和c语言确实比较陌生还好一直接触电脑,有仿真软件,有编译软件等等,不明白的网上搜,LED灯例程确实刚刚看到简单几行头一行文件头文件就难倒了,昨天我看Keil里面好像有stdio.h这个文件头文件,打开(adf仿真文件打开的),汇编语言还是c语言没注意,回头先看看reg52.h的内容是什么。
请教用 Arduino或 C 语言可否用面向对象的编程思路编程。
回复 支持 反对

使用道具 举报

     
发表于 2018-12-22 19:06:50 | 显示全部楼层
pdshyh 发表于 2018-12-22 17:51
谢谢washu 老师, Arduino和 C 语言有渊源, 也是一种经过包装的简化的 C 语言,知道了,我网搜搜c#比C ...

那并不是你搜索到的简单加法例程里的 stdio.h,因为你肯定找不到 51 单片机用 scanf 读取你的输入,然后用 printf 给你输出的地方

单片机也会有做文字处理的需求,所以一些编译器会有用于格式化字符串的函数,它只是格式化字符串而已,至于格式化后的字符串如何输出那就是你要头疼的问题了,当然有的编译器会提供更丰富的库,比如我用的 AVR 编译器还有 1602 字符 LCM 的库,格式化后的字符串直接就能 print 到 LCM 上 如果你的编译器也有类似的库那么你也可以这样向 LCM printf 一串字符。

C 语言是面向过程的语言,它和面向对象概念融合后变为 C++ 语言,所以 C 语言你要面向对象就会变成 C++。Arduino 是用 C 和 C++ 为基础开发的,所以它有一定但不非常彻底的面向对象概念,比如下面一个网络上的 Arduino 使用外部库的荔枝,就是把库 SR04 作为对象,创建了它的两个实例 ultrasonic1 和 ultrasonic2,并使用了它们继承自 SR04 的 GetDistance 方法。串口(Serial)显然也一样。

cr10945.png
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-12-23 15:29:03 | 显示全部楼层
本帖最后由 pdshyh 于 2018-12-23 15:30 编辑
washu 发表于 2018-12-22 19:06
那并不是你搜索到的简单加法例程里的 stdio.h,因为你肯定找不到 51 单片机用 scanf 读取你的输入,然后 ...


       谢谢washuls,您的意思我明白了,我是看到好像有stdio.h这个文件,软件在办公室计算机中,没在办公室没法核实,stdio.h文件头标准输入输出是针对pc的输入输出设备,单片机没有
      我知道了,C 语言是面向过程的语言,它和面向对象概念融合后变为 C++ 语言,面向对象编程不但有这个理念还要有相适应的语言配合。 Arduino 除了51单片机不能用,往上的单片机都可以用,而且可以面向对象编程,我在请教一个反方向的问题,可以面向对象编程语言也可以面向过程编程吧
      我看流水灯Keil 51中有Delay(5000) 这样用的,这样算不算更简单点了

补充内容 (2018-12-24 16:56):
有stdio.h这个文件,是c语言
/*--------------------------------------------------------------------------
STDIO.H

Prototypes for standard I/O functions.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __STDIO_H__
#define __STDIO_H__

#ifndef EOF
#define EOF -1
#endif

#ifndef NULL
#define NULL ((void *) 0)
#endif

#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned int size_t;
#endif

#pragma SAVE
#pragma REGPARMS
extern char _getkey (void);
extern char getchar (void);
extern char ungetchar (char);
extern char putchar (char);
extern int printf   (const char *, ...);
extern int sprintf  (char *, const char *, ...);
extern int vprintf  (const char *, char *);
extern int vsprintf (char *, const char *, char *);
extern char *gets (char *, int n);
extern int scanf (const char *, ...);
extern int sscanf (char *, const char *, ...);
extern int puts (const char *);

#pragma RESTORE

#endif


补充内容 (2018-12-24 16:58):
O(∩_∩)O哈哈~Delay(5000) 只是延时一部分,确实很多语句组成。

补充内容 (2018-12-24 17:02):
小白,刚刚接触,不是很熟悉。
回复 支持 反对

使用道具 举报

     
发表于 2018-12-23 21:07:26 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-12-24 16:12:35 | 显示全部楼层
抱歉35楼提供的汇编语言和c语言的led灯,用keil转换有问题,汇编语言结构不完善,c语言有一处错误,本人小白keil不熟,重新在网上搜了一个LED闪烁的简单试验,分别用汇编语言和c语言的led灯程序,芯片AT89C52,p1脚输出。
汇编语言:
/**************************************************************************************
*  LED闪烁的简单试验  *
*
*     连接方法: JP11(P1)和J12用8PIN排线连接起来 *
*
***************************************************************************************/        
          ORG 0000H            ;程序从此地址开始运行
        LJMP MAIN            ;跳转到 MAIN 程序处
        ORG 030H            ;MAIN 从030H处开始
MAIN:        
          MOV P1 ,#00H    ;  P1    为低电平 LED 灯亮
        ACALL DELAY                ;调用延时子程序
        MOV P1 ,#0FFH
        ACALL DELAY
        AJMP MAIN        ;跳转到主程序处
DELAY:        MOV R5,#04H           ;将立即数传给寄存器R5
F3:        MOV R6,#0FFH
F2:        MOV R7,#0FFH
F1:        DJNZ R7,F1               ;若为0程序向下执行,若不为0程序跳转到
        DJNZ R6,F2
        DJNZ R5,F3
        RET
        END
c语言:
/**************************************************************************************
* LED闪烁的简单试验*
*        
*     连接方法: JP11(P1)和J12用8PIN排线连接起来*
*                                                                                                                                                                          ****************************************************************************************/
#include <reg51.h>           //此文件中定义了51的一些特殊功能寄存器
void delay(unsigned int i);  //声明延时函数
main()
{
   while(1){
  P1  = 0x00; //置P0口为低电平
    delay(600); //调用延时程序
  P1  = 0xff; //置P0口为高电平
   delay(600); // 调用延时程序
}

}

/*******延时函数*************/
void delay(unsigned int i)
{
    unsigned char j;
    for(i; i > 0; i--)   //循环 600*255 次
        for(j = 255; j > 0; j--);
}

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-12-25 10:31:59 | 显示全部楼层
本帖最后由 pdshyh 于 2018-12-25 10:39 编辑

O(∩_∩)O哈哈~用KEIL c51 μvision 和PROTEUS isis 做的用楼上编程的单片机的仿真电路,刚刚摸到门边。
Image 1.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-27 21:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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