|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
同样的程序,在不同的芯片上有不同的效果 |
作者:isoar 栏目:单片机 |
while(1)P0=0x00; 注:P0口都接了5.6K的上拉 就是循环向P0口写0,可是同样的程序在STC的芯片和PHILIPS的P89V51RD2上执行的结果却不一样 STC芯片的执行时P0口始终是低电平, P89C51RD2则只有一个指令周期的低电平,然后就被上拉电阻拉到高电平去了 按我的理解P89V51RD2的执行结果是对的,不知各位还有什么高见? |
2楼: | >>参与讨论 |
作者: isoar 于 2005/10/30 21:59:00 发布:
自己顶一下,等高手来上班 |
3楼: | >>参与讨论 |
作者: hotpower 于 2005/10/30 22:02:00 发布:
估计被狗叼去了 |
4楼: | >>参与讨论 |
作者: yewuyi 于 2005/10/31 8:38:00 发布:
不是“骨头”啊,为什么被叨走? 难道HOTPOWER在上面抹了点“猪油”? |
5楼: | >>参与讨论 |
作者: computer00 于 2005/10/31 9:25:00 发布:
一直是低电平的结果正确。 检查另一个,也许真的是被狗叼走了。 又或者根本跑不起来。 |
6楼: | >>参与讨论 |
作者: isoar 于 2005/10/31 12:51:00 发布:
我觉得一直是低电平不对,因为…… while(1) { P0^0=0; P0^1=0; P0^2=0; P0^3=0; P0^4=0; P0^5=0; P0^6=0; P0^7=0; } 这样的程序执行后结果就都一样了,始终都是0; PHILIPS的芯片没必要非得把 while(1) P0=0x00; 和上面的程序做得不一样吧? 感觉是STC,少做了在“MOV P0,ACC”指令操作后使PO口置成高阻的功能。 我觉得关键问题是: “MOV P0,ACC”指令执行一个指令周期以后(一个周期内,肯定是数据),P0口应该使高阻呢还是应该继续保持数据呢? |
7楼: | >>参与讨论 |
作者: kenand 于 2005/10/31 14:12:00 发布:
re #include "reg52.h" void main() { int i; for(i=0;i<0x7000;i++); P0=0xFF; while(1) P0=0x00; while(1); } P0口均已接有10K上拉. 上面的程序,在P89V51RD2上运行以后,运行以后首先被拉高,然后被永久拉低. 编译环境 : keil 7.09 编译级别 : level 8 to isoar: 如果方便能否写个小小的测试工程, 并把您的工程发过来交流一下! email:80c51mcu@zlgmcu.com |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |