Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359134
  • 博文数量: 79
  • 博客积分: 1270
  • 博客等级: 中尉
  • 技术积分: 1370
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-12 08:48
个人简介

freedom~~~~~~~~~~

文章分类

全部博文(79)

文章存档

2014年(10)

2013年(2)

2012年(13)

2011年(54)

分类: 嵌入式

2011-09-25 19:12:36

电路图如下:




根据电路图,设置P0口的相应位为低电平即可点亮,在程序中即设置P0的响应位为0灯亮
程序:
  1. #include <REG52.h>
  2. #include <stdio.h>

  3. void delay(int num)
  4. {
  5.     int i,j;
  6.     for(i=0;i<num;i++)
  7.         for(j=0;j<2000;j++)
  8.             ;
  9. }

  10. int main()
  11. {
  12.     while(1)
  13.     {
  14.         P0=1|1<<2|1<<4|1<<6;
  15.         delay(100);
  16.         P0=1<<1|1<<3|1<<5|1<<7;
  17.         delay(100);
  18.         P0=0;
  19.         delay(100);
  20.         P0=0XFF;
  21.         delay(100);
  22.     }
  23.     
  24. }

说明:

注意其中P0为特殊寄存器,0x80只能进行直接寻址不能进行间接寻址

因此,可以mov 0x80,0x01

而不可以mov r0,#0x80
mov @r0,0x01

反应在C语言中就是,不能进行*((unsigned char *)0x80)=0x01;

上面用指针进行赋值就相当于再汇编中进行间接寻址
阅读(1093) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~