最近在自学STC89C52单片机,也看了许多的老师的讲解,有些问题没有弄明白,向大家求教一下。
外部中断,我明白有两种触发方式,一种电平触发,一种下降沿触发,也看了单片机的原理图。
我理解的外部中断,电平触发就是一个按键或是什么东西,在单片机引脚上输入了一个电平,这个电平一直存在使其一直保持中断,松开按键就外部中断停止了,
下沿触发像是在引脚上输入一个电平的信号,就像一个波形一样,触发不需要保持住,单片机检测到这个波形了就触发外部中断。
就一点不明白,外部中断一定要接在INT0,INT1引脚上才可以吗?别的端口不可以吗?那如果需要用传感器控制的外部中断多几个,好像局限性很大
我在想,
比如用P2.0引脚
让单片机一直扫描P2.0引脚的状态,有电平变化了就停止程序,没变化继续执行程序。这样好像也和INT0,INT1这些引脚功能一样!
不知道我说的对不对,刚刚接触单片机,以前的知识早忘完了。
还有定时器,感觉怎么这么复杂,可以一会语句循环,一会定时器控制,都不知道到底该用哪种了。
到现在定时器都没弄懂。
程序方面,看了许多的例程,里面的代码,最后感觉有很多的相似,就好像有固定的框框,写程序的时候只需要朝里面套自己的东西一样。
但还是许多代码看不明白,有的头文件我抄上来,编译直接出错,把它删掉就行了,单片机也照样的执行,搞不明白是为什么。
最后希望各位大佬帮个忙,这两天在做个小车,程序老是写不好。不是这里出错就是那里出错。希望有大佬帮帮忙,帮我写一下,这样我能根据我自己的情况,明白的更快一点。
我自己写的哪个错漏百出的程序就不贴上来给大家献丑了
下边是我定义的一些引脚,如果有不对的请大佬们帮忙指出来,谢谢
我按照我想要的程序的流程写出来,请大佬们帮忙填充一下,如果可能请释义一下,越详细越好,以给我们这些小白一些启示,谢谢。
单片机源程序如下:
- #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
- #define uchar unsigned char //这两句的具体意思还没有搞懂,但知道是有关函数的
- #define uint unsigned int
- sbit YB = P2^5; // 定义遥控器 B 键的引脚,B键为-正启动-按键,输入高电平
- sbit YC = P2^6; // 定义遥控器 C 键的引脚, C键为-倒启动-按键,输入高电平
- sbit YD = P3^2; // 定义遥控器 D 键的引脚, D键为-紧急停止, 输入高电平
- // 遥控器为自锁模式,按下按键之后,遥控器接收板持续输出高电平
- // 再次按下遥控器相应按键,停止输出高电平
-
- //这个遥控器接收板只能输出高电平, //如果这几个引脚的位置不行那么应该用哪几个引脚?
- //或者有什么办法能够转换一下这个电平信号,把它从高转到低
- sbit JDQ1 = P1^1; // 定义继电器 1号 的引脚。 | 低电平 触发
- sbit JDQ2 = P1^2; // 定义继电器 2号 的引脚。 |
- sbit JDQ3 = P1^3; // 定义继电器 3号 的引脚。
- sbit JDQ4 = P1^4 // 定义继电器 4号 的引脚。
- sbit JDQ5 = P1^5; // 定义继电器 5号 的引脚。
- sbit JDQ6 = P1^6; // 定义继电器 6号 的引脚。
- sbit JDQ7 = P2^0; // 定义继电器 7号 的引脚。
- sbit JDQ8 = P2^1; // 定义继电器 8号 的引脚。
- sbit NPN1 = P2^2; //定义NPN开关 1号 的信号输入引脚。输入低电平有效
- sbit NPN2 = P2^3; //定义NPN开关 2号 的信号输入引脚。输入低电平有效
- //NPN开关为 常开,
- //NPN接近传感器---无障碍物--无检测信号时输出高电平,
- //NPN接近传感器---有障碍物--有检测信号时输出低电平。
- sbit HW = P2^4; //定义红外避障开关的信号输入引脚。
- //红外避障开关--无障碍物---无检测信号时输出高电平,
- //红外避障开关--有障碍物---有检测信号时输出低电平。
- // 首先我想应该是将各个引脚的初始状态置高或低吧?
- // 这样以便引脚输出相应的状态
- // 程序流程 正序
- // 1 P2^5 接收 高电平 信号输入,开始进入程序
- // 2 P1^1 , P1^4 输出低电平信号--小车跑4秒 --停止,
- // 停顿2秒
- // 3 P1^2 , P1^3 输出低电平信号 --小车跑18秒---停止,
- // 停顿2秒
- // 4 P1^2 , P1^4 , P1^5 输出低电平信号--小车跑2秒--停止,
- // 停顿2秒
- // 5 P1^2 , P1^3 输出低电平信号---小车跑10秒---停止,
- // 停顿2秒
- // 6 P2^0 输出低电平信号-------P2^2 NPN输入低电平--停止。
- // 停顿2秒
- // 7 P1^2 , P1^3 输出低电平信号-----P2^4红外避障输入低电平,停止。
- // 完
-
- //这里边的P3^2起到中断的作用,按下遥控器D,P3^2引脚接收高电平
- //程序暂停,因为接收板为自锁,所以会持续的输出高电平,直到再次按下, //P3^2不再输入高电平,程序从暂停之前那一步继续执行下去.
-
- // 程序流程 倒序 按下C键 P2^6 倒序
- //因为是程序固定的所以倒序也就是把程序倒个方向,不知道这个算不算两个程序,
复制代码
这个小车的效果,就是按下遥控器B ,小车会沿着固定的一条框框道路行走,然后小车上边的一个小电机会做一些动作。按下遥控器C小车就会倒着走回来,这个对于各位大佬应该非常容易,请帮帮我,最好能给我释义一下,你们是怎么定的时间,时间是怎么样计算出来的 , 怎么外部中断的,特别是这两个,非常重要,希望能够在大佬们的帮助下弄懂这两个的用法
万分感谢,
从上个月才开始自己学习单片机,因为时间的关系,之前学习过的一些知识都已经忘记完了,但现在慢慢的看一些视频,各位老师的讲解。各位大佬的发帖,回复,给了我很多的启发和帮助。也开始觉的单片机挺有趣,这几天老是想着程序该怎么设计,需要哪些东西,等等,感觉有点入迷了,不知道快入门了吧。
非常感谢有51黑这样一个大平台,让大家能够互相帮助着在自己喜欢或者赖以生活的道路上走着。
愿大家永远不忘初心,继续前行。  
设置有回复奖励哟,希望各位大佬们赠人玫瑰,手有余香。
附上我用的89C52RC单片机单片机的原理图
|