|
不知道是不是我弄错了,这个现象很奇怪。
源码如下:
- /*------------------------------------------------------------------------------
- HELLO.C
- Copyright 1995-1999 Keil Software, Inc.
- ------------------------------------------------------------------------------*/
- #include <REG52.H> /* special function register declarations */
- /* for the intended 8051 derivative */
- #include <stdio.h> /* prototype declarations for I/O functions */
- #ifdef MONITOR51 /* Debugging with Monitor-51 needs */
- char code reserve [3] _at_ 0x23; /* space for serial interrupt if */
- #endif /* Stop Exection with Serial Intr. */
- /* is enabled */
- /*------------------------------------------------
- The main C function. Program execution starts
- here after stack initialization.
- ------------------------------------------------*/
- void main (void) {
- char k=35;
- /*------------------------------------------------
- Setup the serial port for 1200 baud at 16MHz.
- ------------------------------------------------*/
- #ifndef MONITOR51
- SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
- TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
- TH1 = 221; /* TH1: reload value for 1200 baud @ 16MHz */
- TR1 = 1; /* TR1: timer 1 run */
- TI = 1; /* TI: set TI to send first char of UART */
- #endif
-
- /*------------------------------------------------
- Note that an embedded program never exits (because
- there is no operating system to return to). It
- must loop and execute forever.
- ------------------------------------------------*/
- while (1) {
- P1 ^= 0x01; /* Toggle P1.0 each time we print */
- printf ("Hello World,k=%d\n",k); /* Print "Hello World" */
- }
- }
复制代码
工程是keil安装后的C:\Keil\C51\EXAMPLES\HELLO 中的工程,拿来直接编译的,通过simulator模拟,从串口看时如下的结果:
明明k初始化为k=35,但是为什么打印的时候是8960呢,我计算了一下,8960为35的256倍,当初始化k=1时,打印的printf出来的k=256。
谁知道这是为什么吗?
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|